2

Execute SQL Task のロギングを実装する最良の方法は何だろうと思っていました。たとえば、SQL 実行タスク コンポーネントごとに、次のログを記録したいと思います。

1) SQL タスクの説明。2) SQL タスクで使用される SQL ステートメント。3) SQL ステートメントの結果。SQL ステートメントはスカラー値を返しています。4) SSIS が作成するジョブ実行 ID。これは、SSIS が作成する Operation_Id です。

現在、これは私がそれを実装している方法であり、非常に反復的です。

1) SQL 実行タスク (mySQLTask と呼びます) ごとに、mySQLTask の実行後イベントに「ログ結果」という別の SQL 実行タスクを作成します。2) "Log Result" Execute SQL Task から実行される Log_Result というストアド プロシージャを作成します。3) 次に、SQL ステートメントを mySQLTask からコピーし、ハードコードされたパラメーターとしてストアド プロシージャのパラメーターに貼り付けます。たとえば、SQL ステートメント プロパティの「ログ結果」SQL タスクでは、「EXEC Log_Result ?,?,'SELECT COUNT(*) FROM TABLE',?

mySQLTask から SQL ステートメントを動的に取得する方法はありますか? Aそして、これを行うためのより良い方法はありますか?

また、ロギング機能の ExecuteSQLExecutingQuery オプションの組み込みロギングで SSIS を調査しました。実行された SQL ステートメントが表示されますが、結果も追跡したいと考えています。

ありがとう。

4

1 に答える 1

0

この本とそこに含まれるロギング フレームワークを強くお勧めします。

Microsoft SQL Server 2008 Integration Services: 問題、設計、解決策

ISBN: 978-0-470-52576-0

私があなたの質問を正しく理解していれば、あなたが探しているものを正確に実行していると言えます。コードのダウンロードリンクはこちら。

あなたの質問を正しく理解していれば、SQL Server 構成タイプのパッケージ構成から Execute SQL Task SQLStatement プロパティを構成すると、説明したことを行うために使用できると言えます。

これにより、SQL サーバーのテーブル内に SQL ステートメントを保持し、クエリを実行して、各パッケージ タスクのログを含む他のテーブルに結合できます。

セットアップは非常に簡単で、非常に堅牢です。著者は、この手順を順を追って説明する優れた仕事をしています。起動して実行するには、約 1 日かかります。

SQL 実行タスクのスカラー結果を記録すると、SSIS PDS フレームワークが強化されます。しかし、あまり心配する必要はありません。すぐに使用できる PackageTaskLog テーブルにうまく収まるはずです。参考までに、PackageTaskLog スクリプトを以下に示します。

CREATE TABLE [adm].[PackageTaskLog](
    [PackageTaskLogID] [int] IDENTITY(1,1) NOT NULL,
    [PackageLogID] [int] NOT NULL,
    [SourceName] [varchar](255) NOT NULL,
    [SourceID] [uniqueidentifier] NOT NULL,
    [StartDateTime] [datetime] NOT NULL,
    [EndDateTime] [datetime] NULL,
 CONSTRAINT [PK_PackageTaskLog] PRIMARY KEY CLUSTERED 
(
    [PackageTaskLogID] ASC
)
于 2013-12-15T03:08:37.423 に答える