2017-08-23 11 views
0

複数のssisパッケージを実行するジョブのリストがあります。私は大きなリストを持っています。msdbにtsqlを実行して、接続文字列を含むステップのパッケージの情報を取得できるかどうかを知りたいです。SQLジョブステップでSSISパッケージの接続を見つける方法

+1

どのSSIS(SQL)サーバーのバージョンを使用していますか?ジョブで呼び出されたSSISパッケージは、SSISDB-SSISカタログまたはファイルストレージに格納されますか? – Ferdipux

+0

こんにちはバージョンはSQL Server 2016で、パッケージはSSISカタログに格納されています。 – Juan

+0

@Ferdipux何かありますか? – Juan

答えて

0

実行をチェックしたいサーバーに対するこのクエリ:

SELECT [sJSTP].[step_id], Name, sJSTP.Command FROM [msdb].[dbo].[sysjobs] [sJOB] 
    LEFT JOIN [msdb].[dbo].[sysjobsteps] AS [sJSTP] 
    ON [sJOB].[job_id] = [sJSTP].[job_id] 
    AND [sJOB].[start_step_id] = [sJSTP].[step_id] 
ORDER BY Name, step_id 

乾杯!

+0

これは素晴らしいですが、私は接続文字列を見ることができません。ステップ統合サービスパッケージで選択すると、パッケージを選択してコンカレントマネージャーにアクセスし、接続を変更することができます。この接続は私が欲しいものです。 – Juan

+0

@Juanコマンドにパラメータとして接続が追加されました。答えは正しい。ただし、接続が設定されているパッケージのみを取得するWHERE句を追加することができます。 '%/ Connection%'のようなWHEREコマンド –

+0

はい、これは正しいですが、tsqlコマンドを実行していますが、この場合はssisパッケージを呼び出しています。 – Juan

1

パッケージがSSISDBカタログに格納されている場合、実際の接続文字列を取得するには、SSIDBデータベースを照会する必要があります。ここで私が示唆していることは、Rodrigo Aが提供しているクエリを使用し、文字列関数を使用してパッケージ名を取得し、ステップIDとパッケージ名を出力として取得するために 'Command'という列をさらに調整することです。あなたが取得しているパッケージの一覧を使用して、次のクエリのIN句に入れてSSISDBに対してそれを実行 -

select prj.name     as 'ProjectName' 
     ,op.object_name   as 'SSISPackageName' 
     ,op.parameter_name  as 'ParmaterName' 
     ,op.design_default_value as 'ConnectionString' 
from catalog.object_parameters op 
     join catalog.projects prj 
      on op.project_id = prj.project_id 
where op.parameter_name like '%ConnectionString%' 
     and op.object_name in (
     --put the package name list here 
     ); 

あなたは、ステップIDを取得するには、結果セットに参加することができ、PackageNameのとそのパッケージ内の接続文字列

関連する問題