今日はGoogleのスキルだけでは不十分だと思いますが、特定の環境変数名を使用しているパッケージストア内のすべてのSSISパッケージを特定する簡単なTSQLスクリプトを探しています。
たとえば、パッケージを構成して[パラメーター]ページを見ると、特定の環境変数を選択できます。次のスクリーンショットでは、私が関係している環境変数の名前はSMTP
です。この環境変数を使用してすべてのパッケージを検索したいので、en masseを変更する前に調査/テストを実行できます。
誰かがスクリプトをすぐに利用できる場合は、それを投稿していただければ幸いです。それ以外の場合は、コードを記述した後で何かを投稿します。
ありがとう!
環境変数はプロジェクトレベルまたはパッケージレベルで使用できるため、このクエリは、変数が使用されているレベルを示し、必要な結果をすばやく返します。うまくいけば、これは将来的に他の誰かのために役立つでしょう。
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%'
上記の回答クエリを変更して、すべてのプロジェクト/パッケージパラメータのデフォルト値と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%'