web-dev-qa-db-ja.com

特定の環境変数を使用しているSSISパッケージを識別する方法

今日はGoogleのスキルだけでは不十分だと思いますが、特定の環境変数名を使用しているパッケージストア内のすべてのSSISパッケージを特定する簡単なTSQLスクリプトを探しています。

たとえば、パッケージを構成して[パラメーター]ページを見ると、特定の環境変数を選択できます。次のスクリーンショットでは、私が関係している環境変数の名前はSMTPです。この環境変数を使用してすべてのパッケージを検索したいので、en masseを変更する前に調査/テストを実行できます。

enter image description here

誰かがスクリプトをすぐに利用できる場合は、それを投稿していただければ幸いです。それ以外の場合は、コードを記述した後で何かを投稿します。

ありがとう!

3
John Eisbrener

環境変数はプロジェクトレベルまたはパッケージレベルで使用できるため、このクエリは、変数が使用されているレベルを示し、必要な結果をすばやく返します。うまくいけば、これは将来的に他の誰かのために役立つでしょう。

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%'
4
John Eisbrener

上記の回答クエリを変更して、すべてのプロジェクト/パッケージパラメータのデフォルト値とreferenceVariableを取得しました

SELECT     fldr.name AS FolderName
        ,objp.[referenced_variable_name] AS [EnvironmentVariable]
        , proj.name AS ProjectName
        , COALESCE('Package: ' + pkg.name, 'Project') AS Scope
        , objp.parameter_name COLLATE Latin1_General_CS_AS AS ParameterName
        ,Objp.design_default_value 
        ,Objp.referenced_variable_name
        ,(select top 1 Ev.value as VariableValue from SSISDB.[internal].[environment_variables] EV where ev.name=Objp.referenced_variable_name) as [value]
FROM SSISDB.catalog.folders AS fldr
   INNER JOIN  SSISDB.catalog.projects proj
            ON proj.folder_id = fldr.folder_id
    Left JOIN SSISDB.catalog.object_parameters objp    
        ON objp.project_id = proj.project_id
    LEFT JOIN SSISDB.catalog.packages pkg
        ON objp.object_name = pkg.name
        AND objp.project_id = pkg.project_id
--WHERE proj.name like '%XXX%'
0
Piyush jain