如何识别哪些 SSIS 包使用给定的环境变量?

Joh*_*ner 5 sql-server ssis t-sql

我怀疑我今天的 Google 技能不够,但我正在寻找一个快速的 TSQL 脚本,该脚本将识别包存储中使用给定环境变量名称的所有 SSIS 包。

例如,当我配置一个包并查看 Paramaters 页面时,我可以选择一个给定的环境变量。在以下屏幕截图中,我关注的环境变量名为SMTP。我想找到所有使用这个环境变量的包,这样我就可以在进行任何大规模更改之前进行一些调查/测试。

在此处输入图片说明

如果有人有现成的脚本,我将不胜感激,如果你能发布它,否则我会在编码后发布一些东西。

谢谢!

Joh*_*ner 5

由于环境变量可以在项目或包级别使用,此查询将指示使用变量的所述级别并快速返回我想要的结果。希望这会在未来对其他人派上用场。

SELECT    objp.[referenced_variable_name] AS [EnvironmentVariable]
        , fldr.name AS FolderName
        , proj.name AS ProjectName
        , COALESCE('Package: ' + pkg.name, 'Project') AS Scope
        , objp.parameter_name COLLATE Latin1_General_CS_AS AS ParameterName
FROM SSISDB.catalog.object_parameters objp
    INNER JOIN SSISDB.catalog.projects proj
        ON objp.project_id = proj.project_id
    INNER JOIN SSISDB.catalog.folders AS fldr
        ON proj.folder_id = fldr.folder_id
    LEFT JOIN SSISDB.catalog.packages pkg
        ON objp.object_name = pkg.name
        AND objp.project_id = pkg.project_id
-- Only search Projects/Packages that reference Environment variables
WHERE objp.value_type = 'R'
    AND objp.referenced_variable_name LIKE '%SMTP%'
Run Code Online (Sandbox Code Playgroud)