SSISパッケージを実行するために、C#プロジェクトで統合サービス参照を使用しています。特定の手順が完了したときなどのより詳細なログをキャプチャすることは可能ですか?DTSEXECに表示される出力に似ていますか?SSISDB実行の進行状況を監視
0
A
答えて
2
exeuction idを取得しているアプリケーションであれば、メッセージを直接カタログに問い合わせることができます。また、SSISDBは、何らかの形式のログを有効にする必要があります。
SELECT event_message_id
, message_time
, message
, package_name
, event_name
, message_source_name
, package_path
, execution_path
, threadID
FROM CATALOG.event_messages em
WHERE em.operation_id = 2 --execution id
ORDER BY event_message_id DESC
EDIT:ここ
は、同じタスクのプログラムバージョンです:
using System;
using System.Text;
using Microsoft.SqlServer.Management.IntegrationServices;
using System.Data.SqlClient;
using System.Collections.ObjectModel;
namespace C_junk
{
public class PackageExecuter
{
public string Catalog { get; set; }
public string Folder { get; set; }
public string Project { get; set; }
public string Package { get; set; }
public string SsisConnString { get; set; }
public string Execute()
{
SqlConnection ssisServer = new SqlConnection(this.SsisConnString);
var ssis = new IntegrationServices(ssisServer);
var package = ssis
.Catalogs[this.Catalog]
.Folders[this.Folder]
.Projects[this.Project]
.Packages[this.Package];
var setValueParameters = new Collection<PackageInfo.ExecutionValueParameterSet>();
setValueParameters.Add(new PackageInfo.ExecutionValueParameterSet
{
ObjectType = 50,
ParameterName = "SYNCHRONIZED",
ParameterValue = 1
});
var executionId = package.Execute(true, null, setValueParameters);
Catalog catalog = new Catalog(ssis);
var execution = catalog.Executions[executionId];
return GetMessages(execution.Messages);
}
private static string GetMessages(OperationMessageCollection messages)
{
StringBuilder logMessages = new StringBuilder();
foreach (var message in messages)
{
string logMessage = String.Format(@"Message id: {0}. {1} - Type: {2}: {3}"
, message.Id
, message.MessageTime
, GetMessageType(message.MessageType)
, message.Message);
logMessages.AppendLine(logMessage);
}
return logMessages.ToString();
}
private static string GetMessageType(short? typeId)
{
string messageType = "";
switch (typeId)
{
case 120:
messageType = "Error";
break;
case 110:
messageType = "Warning";
break;
case 70:
messageType = "Information";
break;
case 10:
messageType = "Pre-validate";
break;
case 20:
messageType = "Post-validate";
break;
case 30:
messageType = "Pre-execute";
break;
case 40:
messageType = "Post-execute";
break;
case 60:
messageType = "Progress";
break;
case 50:
messageType = "StatusChange";
break;
case 100:
messageType = "QueryCancel";
break;
case 130:
messageType = "TaskFailed";
break;
case 90:
messageType = "Diagnostic";
break;
case 200:
messageType = "Custom";
break;
case 140:
messageType = "DiagnosticEx";
break;
case 400:
messageType = "NonDiagnostic";
break;
case 80:
messageType = "VariableValueChanged";
break;
}
return messageType;
}
}
}
このクラスは以下のようになり、 "基本的には、" あなたにDTEXECの出力に相当するものを取得します
PackageExecuter pkg = new PackageExecuter();
pkg.Catalog = "SSISDB";
pkg.Folder = "<SomeFolder>";
pkg.Project = "<SomeProject>";
pkg.Package = "Package1.dtsx";
pkg.SsisConnString = @"Data Source =<MyServer>; Integrated Security = SSPI;";
string messages = pkg.Execute();
メモメッセージタイプは整数として返され、意味のあるものになるようにテキストに変換する必要があるということです。また、このメソッドは、実行が完了したときにサーバーからメッセージを取得できるように、パッケージを同期的に実行します。 Catalogクラスには、executionsというコレクションがあります。実行には、一連のメッセージを取得するために使用できるメッセージコレクションがあります。私のテストの出力は次のようになります:
Message id: 106. 3/13/2017 8:23:09 PM +00:00 - Type: Pre-validate: Package1:Validation has started.
Message id: 107. 3/13/2017 8:23:09 PM +00:00 - Type: Pre-validate: Data Flow Task:Validation has started.
Message id: 108. 3/13/2017 8:23:09 PM +00:00 - Type: Information: Data Flow Task:Information: Validation phase is beginning.
Message id: 109. 3/13/2017 8:23:09 PM +00:00 - Type: Post-validate: Data Flow Task:Validation is complete.
Message id: 110. 3/13/2017 8:23:09 PM +00:00 - Type: Post-validate: Package1:Validation is complete.
Message id: 111. 3/13/2017 8:23:09 PM +00:00 - Type: Pre-execute: Package1:Start, 8:23:09 PM.
Message id: 112. 3/13/2017 8:23:09 PM +00:00 - Type: Post-execute: Package1:Finished, 8:23:09 PM, Elapsed time: 00:00:00.141.
Message id: 113. 3/13/2017 8:23:09 PM +00:00 - Type: Pre-execute: Data Flow Task:Start, 8:23:09 PM.
Message id: 114. 3/13/2017 8:23:09 PM +00:00 - Type: Pre-validate: Data Flow Task:Validation has started.
Message id: 115. 3/13/2017 8:23:09 PM +00:00 - Type: Information: Data Flow Task:Information: Validation phase is beginning.
Message id: 116. 3/13/2017 8:23:09 PM +00:00 - Type: Post-validate: Data Flow Task:Validation is complete.
Message id: 117. 3/13/2017 8:23:09 PM +00:00 - Type: Warning: Data Flow Task:Warning: Component "Derived Column" (2) has been removed from the Data Flow task because its output is not used and its inputs either have no side effects or are not connected to outputs of other components. If the component is required, then the HasSideEffects property on at least one of its inputs should be set to true, or its output should be connected to something.
Message id: 118. 3/13/2017 8:23:09 PM +00:00 - Type: Warning: Data Flow Task:Warning: Component "OLE DB Source" (8) has been removed from the Data Flow task because its output is not used and its inputs either have no side effects or are not connected to outputs of other components. If the component is required, then the HasSideEffects property on at least one of its inputs should be set to true, or its output should be connected to something.
Message id: 119. 3/13/2017 8:23:09 PM +00:00 - Type: Information: Data Flow Task:Information: Execute phase is beginning.
Message id: 120. 3/13/2017 8:23:09 PM +00:00 - Type: Post-execute: Data Flow Task:Finished, 8:23:09 PM, Elapsed time: 00:00:00.016.
関連する問題
- 1. バネバッチジョブの進行状況を監視
- 2. MySQLの長いクエリの進行状況の監視
- 3. ハンドブレーキのPython監視の進捗状況
- 4. 進行状況のテキストを含む水平進行状況バー
- 5. リモートjarファイルをダウンロードしてダウンロードの進行状況を監視します
- 6. Tableauのインクリメンタルリフレッシュの進行状況をプログラムで監視できますか?
- 7. アップロード後の進行状況を監視した後に、Dropzone.jsのプロキシファイル
- 8. クラスタのHDFSレプリケーションの進行状況を監視する方法は?
- 9. wxPythonの進行状況バー
- 10. pandas.DataFrame.to_sqlの進行状況バー
- 11. Eclipseの進行状況
- 12. AVPlayerストリーミングの進行状況
- 13. アップロードの進行状況 - リクエスト
- 14. システムメディアプレーヤーの進行状況(UISlider)
- 15. 進行状況のイベントを進行状況バーにリンクする方法
- 16. parSapplyと進行状況バー
- 17. マルチステップモーダル - 進行状況バー
- 18. ウェブサイトコンテンツロード、進行状況バー
- 19. GIFアップロードの進行状況を背景にスクリプトを実行
- 20. プログラムの実行中に完了の進行状況を表示
- 21. .Net RX:並列実行の進行状況を追跡
- 22. メソッドがWindowsアプリケーションで実行中に進行状況を表示
- 23. javafxで進行状況インジケータを実行する方法
- 24. WCFの実行中に進行状況が更新される
- 25. フレックスイベントの進行状況を確認
- 26. cURLの進行状況を確認
- 27. 状況監視を伴うRailsバックグラウンドジョブ
- 28. パイソン/ RQ - 監視員の状況
- 29. ドメイン接続状況の監視
- 30. C++のインターネット使用状況監視ツール
私はオブジェクトのイベントを探していましたが、データベースをポーリングしませんでした。ありがとう – serializer
プログラムバージョンで更新します –
プログラムからイベントをキャプチャしたいのですが、ここから開始する必要があります。https://msdn.microsoft.com/en-us/library/ms135967.aspx –