可能なオプション:
Logging
を利用する必要があります SSIS の機能。メッセージをキャプチャするイベントを構成できます。私は通常ログ OnWarning
を好みます および OnError
パッケージで発生するすべての警告メッセージとエラー メッセージを追跡します。ログデータを保存するためのさまざまなプロバイダーがあります。ログ情報を照会できるように、SQL Server を使用することを好みます。
SSIS 2012 から表示されるログ オプション:
パッケージへのログインを有効にするには、パッケージ Business Intelligence Development Studio (BIDS)
をクリックする必要があります。 SSIS 2005 - 2008 R2 または SQL Server Data Tools (SSDT)
でパッケージを開発している場合 SSIS 2012 でパッケージを開発している場合。
SSIS
をクリックします メニューをクリックし、Logging...
をクリックします。
[SSIS ログの構成] ダイアログが表示されます。
左側で、パッケージまたは個々のタスクをチェックして、イベント データをログに記録できます。
プロバイダーとログ タブで、ログ情報を保存できる適切なプロバイダーを選択できます。以下のスクリーンショットは、イベント情報が接続マネージャー OLEDB_PracticeDB
を使用して SQL Server データベースにキャプチャされることを示しています。 .
詳細em> タブで、キャプチャするイベントを選択できます。以下のスクリーンショットは、次のイベントをキャプチャしていることを示しています。
- OnError
- オンインフォメーション
- OnTaskFailed
- OnWarning
@William Todd Salzman
に感謝します OnTaskFailed
を推奨するため イベント
サンプル パッケージ イラスト:
SO_15004109.dtsx
という名前のパッケージがあるとします。 データ フロー タスクで およびスクリプト タスク .データ フロー タスクは、内部にコンポーネントを持たない単なるダミーです。
スクリプト タスクの Main メソッドには、カスタム情報、警告、およびエラー メッセージを起動する次のコードが含まれているため、ログ データ ソースにどのようにキャプチャされるかを確認できます。コードは SSIS 2012 用に書かれているため、SSIS 2005 用に変更する必要がある場合があります。私は VB.NET
を選択しました。 C#
の代わりに sql-server-2005
SSIS 2005 は VB.NET のみをサポートします。
SSIS 2005 以降の VB.NET のスクリプト タスク コード。
#Region "Imports"
Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime
#End Region
<Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute()> _
<System.CLSCompliantAttribute(False)> _
Partial Public Class ScriptMain
Inherits Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
Public Sub Main()
Dim fireAgain As Boolean = False
Dts.Events.FireInformation(101, "Custom Script Information", "This is a test information message.", String.Empty, 0, fireAgain)
Dts.Events.FireWarning(201, "Custom Script Warning", "This is a test warning message.", String.Empty, 0)
Dts.Events.FireError(201, "Custom Script Error", "This is a test error message.", String.Empty, 0)
Dts.TaskResult = ScriptResults.Success
End Sub
#Region "ScriptResults declaration"
Enum ScriptResults
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
End Enum
#End Region
End Class
スクリプト タスク内でエラーが発生したため、パッケージを実行すると失敗します。 .
エラーをログに記録したデータ ソースに移動すると、SQL Server ログ プロバイダーを選択した場合、SSIS が情報をログに記録するためのテーブルを作成することがわかります。以下の表は、ログ プロバイダーとして選択された SQL Server データベースで SSIS が作成するログ テーブルを示しています。
SSIS Version Log table name Table type
-------------- ---------------- ----------
SSIS 2005 dbo.sysdtslog90 User
SSIS 2008 dbo.sysdtslog100 User
SSIS 2008 R2 dbo.sysssislog System
SSIS 2012 dbo.sysssislog System
以下のクエリをデータベースで実行して、このサンプル パッケージによってキャプチャされたイベントを表示しました。イベントはコンテナーとタスクごとにログに記録されるため、一部のメッセージは 2 回表示されます。テーブルの名前は dbo.sysssislog
です パッケージは SSIS 2012 で作成されたためです。
select id, event, source, message from dbo.sysssislog;
ロギングに関する個人的な経験:
ログのエラー メッセージを表示するだけで、何が問題なのかを理解することができました。私の意見では、本番環境でパッケージをデバッグすることはお勧めできません。ただし、ログ イベントをキャプチャすることをお勧めします。
私が SSIS 2005 と 2008 で働いていたとき、ログ テーブルを照会してジョブ実行の日次レポートを生成し、関心のある人に PDF 添付ファイルを送信する SSRS ベースのレポートを作成しました。
SSIS 2012 では、ツールに を使用したレポート機能が組み込まれていることが改善されました。 統合サービス カタログ
SSIDB
という名前のデータベースを作成します .