1

サーバー ジョブを取得し、各ジョブ ステップを取得したら、次のようなジョブで SQL Management Studio を開いているときに見つけることができるように、各ステップに関連する接続文字列を取得します。

ここに画像の説明を入力

C# コードで各パッケージの接続文字列を取得する適切な方法はありますか?

ServerConnection conn = new ServerConnection("localhost");
//new SqlConnection("data source=localhost;initial catalog=CPEInventory_20101122;integrated security=True;"));
Server server = new Server(conn);
JobCollection jobs = server.JobServer.Jobs;
var stepInformationsDetailsList = new List<StepInformationsDetails>();

foreach (Job job in jobs)
{
    foreach (JobStep jobstep in job.JobSteps)
    {
        stepInformationsDetailsList.Add(new StepInformationsDetails() {
           ServerName = job.Parent.MsxServerName,
           ReportName = job.Name,
           StepName = jobstep.Name,
           Command = jobstep.Command,
           Schedual = jobstep.DatabaseName,
           StepID = jobstep.ID
        });
    }
}
dataGridView1.DataSource = stepInformationsDetailsList;
4

1 に答える 1

0

そのデータはすべて Command 変数にあります。ジョブ ステップ タブで何かをオーバーライド/追加すると、最終的な結果として、dtexec に渡されるコマンド ラインにそれらの値が含まれます。UI は、単にテーブルのコマンド列から引数を切り出して、msdb.dbo.sysjobstepsそれらをさまざまなタブにリンクしているだけです。

localhost では、このクエリは完全なコマンド ラインを返すはずです。

SELECT
    JS.command
FROM
    dbo.sysjobs AS SJ
    INNER JOIN dbo.sysjobsteps AS JS
    ON JS.job_id = SJ.job_id
WHERE
    sj.name = 'Concessions made by Simba Auto-Report';

Connection Manager 'Simba Replica...' の値をオーバーライドしていないため、コマンドの出力には表示されません。/SQL "\"\MyFolder\MyPackage\"" /SERVER "\"localhost\sql2008r2\"" /CONNECTION SYSDB;"\"Data Source=SQLDEV01\INT;Initial Catalog=SYSDB;Provider=SQLNCLI10.1;Integrated Security=SSPI;Auto Translate=False;\"" /CHECKPOINTING OFF /REPORTING E /CONNECTION セクションは、「Simba Replica...」の値に関連付けられます。

私は、UI が API Microsoft.SqlServer.Dts.Runtimeを介して SSIS パッケージを調べ、Connectionsプロパティを介してすべての接続マネージャーを識別して、そのダイアログを作成していると思いますが、わかりません。

于 2013-01-28T16:00:47.120 に答える