2013-01-04 20 views
5

私はSSISの初心者です。私はいくつかのシーケンスコンテナとそれらの中にいくつかのタスクでパッケージを作成しました。パッケージは自動的に実行されるようにスケジューリングされますので、SQLデータベースの自分のログテーブルに挿入/更新/削除された行の数などの実行時エラーとステータスを取得します。SSIS SQL Serverへのログ

SSIS SQL Serverへのログ機能を使用して、エントリを既定のテーブルに記録し、SQLタスクを作成して自分のログテーブルに挿入することを考えていました。それはそれを行う良い方法ですか?あるいは、他のより良い方法を提案していますか?

また、正しく動作するようにSSISログを取得できませんでした。 SSISログを使用してSQL Serverにログを記録するプロセスを記述したオンラインブログ How to create an error log or custom error log within an SSIS Package?が見つかりました。ただし、ブログで説明されているのとは異なり、

SQL Serverデータベースで作成されたdbo.sysssislogまたはdbo.sp_ssis_addlogentryの表は表示されません。何が間違っていなければなりませんか?ここに私が従った手順があります -

1. Went to SSIS Logging 
2. Selected Provider Type as SQL Server 
3. Added the OLEDB connection for Configuration 
4. Went to the Detail tabs on each sequence container and chose appropriate events 
5. Clicked "Save..." 
6. Provided the location and name for the XML file 
7. Saved the package and ran it. 

データベース内のそれらの表またはプロシージャはまだ表示されません。私はSQL 2008R2を使用しています。

ご迷惑をおかけして申し訳ございません。

ありがとうございます。

+0

は、ストアドプロシージャ、テンプレートログテーブルは、あなたが持っているカタログにコピーされますパッケージが最初に実行されたときにログプロバイダーで選択されています現在msdbに存在しています – billinkc

答えて

9

#3をあなたのリストに載せてください。そのデータベースの場所を記録します。

SSMSでそのデータベースに移動します。データベースを展開します(左のプラス記号をクリックします)。テーブル位置について

フォルダを展開。 システムテーブルフォルダを展開します。テーブルはそこに見えるはずです。その名前はdbo.sysssislogです。手順の位置について

プログラミングフォルダを展開。 システムストアドプロシージャフォルダを展開します。ストアドプロシージャを表示する必要があります。その名前はdbo.sp_ssis_addlogentryです。

+0

msdbデータベースのテーブルが表示されるようになりましたが、 OLE Dを含めるB "SSISログ"画面の "プロバイダーとログ"タブのmsdbデータベースへの接続。私はまた、すべての私のシーケンスコンテナとタスクに流れるトップレベルコンテナのために選択されたすべてのイベントを持っています。私は何をしていないのですか?ありがとう。 – edyleddie

+0

MSDBデータベースのコピーは単なるテンプレートです。別のデータベースでそれらを使用する必要があります。あなたがそれを変更する前に#3からあなたのデータベースは何でしたか?それがあなたのオブジェクトです。 2008年と2008年のR2ではシステムオブジェクトとなることに注意してください。 2012年についてはわかりません。 –

2

Re。ユーザDB内のsysssislog sysテーブルの可視性(システムテーブルフォルダ内)。 私はSSISパッケージ(2008 R2)のロギングを、ユーザーDBを指定して「SQL Serverデータベースへのイベントのログエントリを書き込む」に設定しました。その後、SSISパッケージを実行しました。 sysssislogがシステムテーブルフォルダに見つかりました(また、期待されるデータが含まれています)。その後、このテーブルが「SSISパッケージの実行ごとに作成された」ことをテストすることにしました。私はこの表を削除しました。 私はSSISパッケージAGAINを実行しました。テーブルsysssislogは実際に(ユーザテーブル内に)作成され、正しいデータが含まれています。

しかし、私はそれ以来、SSMSのシステムテーブルでそれを見ることができませんでした。言い換えれば、テーブルは存在する(例えば、sysobjects、systablesなどに存在する)が、SSMSオブジェクトオブジェクトエクスプローラのリストには表示されない。私はこれがSSISのバグではないことを理解しています。SSISは毎回このテーブルを再作成しますが、SSMSのバグです(このテーブルのメタデータは何とか失われます)。

このテーブルを何度も削除してSSISパッケージを再度実行した場合、実際に再作成され、毎回最後に実行されたSSISパッケージのデータ用に再作成されます。

しかし、私は決してオブジェクトブラウザで見ることができませんでした(確かに私はどのレベルでもリフレッシュしましたが、SSMSを閉じた/再オープンしました。 私はこのシステムテーブルをMSDBデータベースで見ることができます(しかし、それは空です)。

異なるDBのロギングの作成を繰り返しました(別のDBの新しい接続を作成しています)。 SSISが実行され、sysssislogテーブルが作成され、システムテーブルで参照できます(ただし、このテーブルを削除すると、再びオブジェクトブラウザで再作成されることはありません)。

ただ、興味深いバグを共有したかったです。これはMS QA(このテーブル作成の2回目以降のSSISからのSSMSでのテーブル作成の通知)では決してテストされませんでした。

アレクセイ

1

あなたはSSISログを有効にしているケースでは、あなたが(実際のパッケージを実行せずに)タスクを実行しようとしている場合でも、その後、sysssislogテーブルがMSDBまたは言及した接続マネージャのいずれかで作成されることはありません。

1

ロギングでは、通常は変数から必要な情報を取得し、プロセスの最後に実行するストアドプロシージャがあります。これはレコードを "ProjectLog"テーブルに挿入します。理想的かどうかはわかりませんが、それは私たちのために働きます。

理由: *エラーメッセージはカスタマイズすることができるため、読みやすくトラブルシューティングするのが簡単です。 *「OnError」タスクでは、わかりやすいカスタムエラーメッセージが表示されます(「プロセスは実行されませんでした」など)。 *実行するグ​​ループに価値のあるデータを追加できますビジネス要件。

*注、これは毎日上書きエラーログのテキストファイルに加えて、私たちは、追加のステップである。

関連する問題