sql >> データベース >  >> RDS >> Sqlserver

サーバー上で実行される SSIS パッケージの実行を BIDS で監視できますか?

    可能なオプション:

    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 データベースにキャプチャされることを示しています。 .

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

    • OnError
    • オンインフォメーション
    • OnTaskFailed
    • OnWarning

    @William Todd Salzman に感謝します OnTaskFailed を推奨するため イベント

    サンプル パッケージ イラスト:

    SO_15004109.dtsx という名前のパッケージがあるとします。 データ フロー タスクで およびスクリプト タスク .データ フロー タスクは、内部にコンポーネントを持たない単なるダミーです。

    スクリプト タスクの Main メソッドには、カスタム情報、警告、およびエラー メッセージを起動する次のコードが含まれているため、ログ データ ソースにどのようにキャプチャされるかを確認できます。コードは SSIS 2012 用に書かれているため、SSIS 2005 用に変更する必要がある場合があります。私は VB.NET を選択しました。 C# の代わりに 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 という名前のデータベースを作成します .



    1. postgresqlでsymfonyを使用する

    2. SQLDeveloperで自動インクリメント列を設定する方法

    3. PostgreSQL:結果のデータをSQLクエリからExcel/CSVにエクスポートします

    4. ojdbc14.jarとojdbc6.jar