7

私のタイトルは私の現在の目標を示していますが、私は別の解決策を受け入れます。つまり、SQL Server マシンで夜間に実行するようにスケジュールされた一連の SSIS パッケージがあります。

私の企業 IT のエーテルで発生するさまざまな更新により、これらのエクスポートが中断し、ジョブの途中でプロセスが停止することがあります。このプロセスのトラブルシューティングを行うために、ワークステーションで BIDS を起動し、失敗したプロセスを再起動します。BIDS 内で生成されたエラーは、SQL Server/Package Execution History またはサーバー イベント ログ内で見つけたエラーよりもはるかに有用であるため、これは便利です。

歴史的に、私の問題は、すべての問題が BIDS で発生するわけではなく、サーバー上で一貫して発生するということでした。これらの問題は診断が難しく、多くの時間を費やしました。

そのため、パッケージを SSIS サーバーに公開し、BIDS からサーバー インスタンスを起動し、実行中のプロジェクトを監視したいと考えています。これは可能ですか?

そうでない場合、プロセスの実行中に内部ステップを監視できるようにするために他にできることはありますか?

私はこれが不可能かもしれないことを恐れていますが、私は尋ねなければなりません. これにより、デバッグとトラブルシューティングの作業が非常に簡単になります。

4

2 に答える 2

13

可能なオプション:

LoggingSSISの機能を利用する必要があります。これにより、メッセージをキャプチャするイベントを構成できます。私は通常、ログOnWarningOnError作成し、パッケージで発生するすべての警告メッセージとエラーメッセージを追跡することを好みます。ロギングデータを保存するためのさまざまなプロバイダーがあります。ロギング情報を照会できるように、SQLServerを使用することを好みます。

SSIS 2012から表示されるログオプション:

Business Intelligence Development Studio (BIDS)パッケージへのログインを有効にするには、SSIS 2005-2008 R2でSQL Server Data Tools (SSDT)パッケージを開発している場合、またはSSIS 2012でパッケージを開発している場合は、パッケージをクリックする必要があります。

メニューをクリックしSSISてからクリックLogging...

[SSISログの構成]ダイアログが表示されます。

左側では、パッケージまたは個々のタスクをチェックして、イベントデータをログに記録できます。

[プロバイダーとログ]タブで、ログ情報を保存できる適切なプロバイダーを選択できます。次のスクリーンショットは、接続マネージャーを使用してイベント情報がSQLServerデータベースにキャプチャされていることを示していますOLEDB_PracticeDB

SSISログの構成-プロバイダーとログ

[詳細]タブで、キャプチャするイベントを選択できます。以下のスクリーンショットは、次のイベントをキャプチャしていることを示しています。

  • OnError
  • OnInformation
  • OnTaskFailed
  • OnWarning

イベントを推薦してくれた@WilliamToddSalzmanに感謝しますOnTaskFailed

SSISログの構成-[詳細]タブ

サンプルパッケージの図:

データフロータスクスクリプトタスクSO_15004109.dtsxで名前が付けられたパッケージがあるとしましょう。データフロータスクは単なるダミーであり、内部にコンポーネントはありません。

サンプルパッケージ-[データフロー]タブ

スクリプトタスクのMainメソッドには、カスタム情報、警告、およびエラーメッセージを送信する次のコードが含まれているため、ログデータソースでどのようにキャプチャされるかを確認できます。コードはSSIS2012用に記述されているため、SSIS 2005用に変更する必要がある場合がありますでこの質問にタグを付け、SSIS 2005はVB.NETのみをサポートしているため、VB.NET代わりに選択しました。C#

SSIS2005以降の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が情報をログに記録するためのテーブルを作成することに気付くでしょう。次の表に、ログプロバイダーとして選択されたSQLServerデータベースに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、パッケージがSSIS2012で作成されたためです。

select id, event, source, message from dbo.sysssislog;

ロギングデータ

ロギングの個人的な経験:

何が悪かったのかを理解するためにロギングエラーメッセージを表示するだけで、かなりの成功を収めました。私の意見では、本番環境でパッケージをデバッグすることはお勧めできません。ただし、ログイベントをキャプチャすることをお勧めします。

SSIS 2005および2008で働いていたとき、ログテーブルにクエリを実行してジョブ実行の日次レポートを生成し、関係者にPDF添付ファイルを送信するSSRSベースのレポートを作成しました。

SSIS 2012では、ツールに、という名前のデータベースを作成するIntegrationServicesCatalogSSIDBを備えたレポート機能が組み込まれていることが改善されました。

于 2013-02-21T14:36:30.453 に答える
2

私の現在のギグでは、BIxPressという Pragmatic Works の製品の使用を開始しました。これには、ログ記録コードを既存の SSIS パッケージに挿入し、実行中のパッケージを実行時に監視するツールが含まれています。安くはありませんが、役に立ちました。(特に、独自の監視コードを展開する必要がないことを意味するため...)

于 2013-02-21T18:16:31.357 に答える