パッケージ開発のトラブルシューティング
Integration Services には、Business Intelligence Development Studio でパッケージを開発する際にトラブルシューティングを実行できる機能とツールが用意されています。
デザイン時検証問題のトラブルシューティング
BI Development Studio でパッケージを開発する際、データ ソースに接続できなかったり、パッケージ内のあるタスクを実行時に実行しなければ、その後の部分を検証できなかったりする場合があります。Integration Services には、こうした状況が原因で発生する検証エラーを回避するための以下の機能が備わっています。
データ ソースが使用できない場合は [オフライン作業] を有効にする。通常、SSIS デザイナーは、パッケージが使用している各データ ソースに接続して、変換元と変換先に関連付けられたメタデータを検証しようとします。データ ソースを使用できないときは、これが原因で検証エラーが発生します。このような接続が行われないようにするには、[SSIS] メニューの [オフライン作業] を有効にします。DelayValidation プロパティとは異なり、[オフライン作業] オプションはパッケージを開く前でも使用できます。また、[オフライン作業] を有効にしてデザイナーでの操作を高速化し、パッケージを検証するときだけこのオプションを無効にすることもできます。
実行時まで無効なパッケージ要素の DelayValidation プロパティを構成する。デザイン時には構成が有効でないパッケージ要素の DelayValidation を True に設定すると、検証エラーが発生するのを防ぐことができます。たとえば、データ フロー タスクで使用する変換先テーブルが、SQL 実行タスクによって実行時に初めて作成される場合があります。DelayValidation プロパティは、パッケージ ベル、またはパッケージに含まれている個別のタスクやコンテナーのレベルで有効にできます。実行時に同じ検証エラーが発生するのを防ぐため、パッケーを配置するときは、同一パッケージ内の要素についてこのプロパティを True に設定しておく必要があります。
DelayValidation プロパティは、データ フロー タスクに対しては設定できますが、個々のデータ フロー コンポーネントには設定できません。個別のデータ フロー コンポーネントの ValidateExternalMetadata プロパティを false に設定すると、同様の効果を得ることができます。ただし、このプロパティの値が false の場合、データ フロー コンポーネントは、外部データ ソースのメタデータに変更が加えられても認識しません。
検証の発生時に、パッケージによって使用されるデータベース オブジェクトがロックされている場合、検証プロセスが応答しなくなる可能性があります。このような状況では、SSIS デザイナーも応答しなくなります。検証を再開するには、Management Studio を使用して、SQL Server 内の関連するセッションを閉じます。また、このセクションで説明した設定を使用することによって、この問題を回避することもできます。
重要 |
---|
DTC トランザクションでパッケージを実行し (TransactionOption プロパティ = required)、データ フロー コンポーネントで外部メタデータを検証する (ValidateExternalMetadata プロパティ = true) と、データ フローが実行される前に他のタスクが既に DTC トランザクションに存在し、[テーブルまたはビュー] または [テーブル名またはビュー名の変数] が OLE DB 変換先のデータ アクセス方法として使用されている場合に、パッケージは応答を停止することがあります。この場合、検証プロセスは、既に実行されている他のタスクによってブロックされます。これは、検証に使用される接続が DTC トランザクションに参加していないためです。これは仕様による結果です。このような状況を回避するには、データ フロー コンポーネントの ValidateExternalMetadata プロパティを false に設定してください。 |
制御フローのトラブルシューティング
Integration Services には、パッケージの開発時にパッケージの制御フローのトラブルシューティングを行うための次の機能とツールが用意されています。
タスク、コンテナー、およびパッケージにブレークポイントを設定する。SSIS デザイナーに用意されているグラフィカルなツールを使用して、ブレークポイントを設定できます。ブレークポイントは、パッケージ レベル、またはパッケージに含まれている個々のタスクとコンテナーのレベルで有効にできます。タスクやコンテナーの中には、ブレークポイントの設定時にブレークの条件を追加設定するものがあります。たとえば、For ループ コンテナーでは、ループの反復処理を開始するたびに実行を中断するブレーク条件を有効にできます。
デバッグ ウィンドウを使用する。ブレークポイントが設定されたパッケージを実行すると、Business Intelligence Development Studio のデバッグ ウィンドウから、変数の値および状態メッセージにアクセスできるようになります。
[進行状況] タブで情報を確認する。Business Intelligence Development Studio でパッケージを実行すると、SSIS デザイナーで制御フローに関する追加情報を得られます。[進行状況] タブにはタスクとコンテナーが実行順に表示され、パッケージ自体を含め、タスクやコンテナーごとに開始時刻、終了時刻、警告、エラー メッセージが表示されます。
これらの機能の詳細については、「制御フローのデバッグ」を参照してください。
データ フローのトラブルシューティング
Integration Services には、パッケージの開発時にパッケージのデータ フローのトラブルシューティングを行うため、次の機能とツールが用意されています。
データのサブセットだけを使用してテストする。パッケージのデータ フローをデータセットのサンプルだけを使用してトラブルシューティングを行う場合は、比率サンプリング変換または行サンプリング変換を追加して、実行時にインライン データ サンプルを作成できます。詳細については、「比率サンプリング変換」および「行サンプリング変換」を参照してください。
データ ビューアーを使用して、データ フローでのデータの動きを監視する。データ ビューアーには、データが変換元から変換を経て変換先へと移動するのに合わせて、データの値が表示されます。データ ビューアーでは、グリッド、ヒストグラム、散布図、または縦棒グラフでデータを表示できます。データ ビューアーのデータはクリップボードにコピーして、ファイルや Excel のワークシートに貼り付けることができます。詳細については、「データ フローにデータ ビューアを追加する方法」を参照してください。
エラー出力をサポートするデータ フロー コンポーネントでエラー出力を構成する。データ フローの変換元、変換、および変換先の多くで、エラー出力がサポートされています。データ フロー コンポーネントのエラー出力を構成することによって、エラーが含まれているデータを別の変換先に送ることができます。たとえば、別のテキスト ファイルに、失敗したデータや切り捨てられたデータをキャプチャできます。また、データ ビューアーをエラー出力にアタッチしてエラーを引き起こすデータだけを調べることもできます。デザイン時に、エラー出力でエラーが発生したデータ値をキャプチャできるので、実際のデータを効率的に処理できるパッケージの開発に役立ちます。他のトラブルシューティング ツールや機能はデザイン時にしか有益ではありませんが、エラー出力は運用環境でも実用的です。詳細については、「データ フローのエラー処理」を参照してください。
処理された行数をキャプチャする。SSIS デザイナーでパッケージを実行すると、パスを通過した行数がデータ フロー デザイナーに表示されます。データがパスを通過する間、この数値は定期的に更新されます。また、データ フローに行数変換を追加して、最終的な行数を変数に取り込むこともできます。詳細については、「行数変換」を参照してください。
[進行状況] タブで情報を確認する。Business Intelligence Development Studio でパッケージを実行すると、データ フローに関する追加情報が SSIS デザイナーに表示されます。[進行状況] タブには、データ フロー コンポーネントが実行順に表示されます。また、パッケージの各フェーズの進行状況 (パーセント値) や変換先に書き込まれた行数を確認できます。
これらの機能の詳細については、「データ フローのデバッグ」を参照してください。
トラブルシューティングのスクリプト
Microsoft Visual Studio Tools for Applications (VSTA) は、スクリプト タスクおよびスクリプト コンポーネントで使用されるスクリプトを記述する開発環境です。VSTA には、パッケージの開発時にスクリプトのトラブルシューティングを行えるように、次の機能とツールが用意されています。
**スクリプト タスクのスクリプトにブレークポイントを設定する。**VSTA では、スクリプト タスクのスクリプトに対してのみデバッグがサポートされています。スクリプト タスクに設定したブレークポイントは、パッケージおよびパッケージ内のタスクやコンテナーに設定したブレークポイントと統合されます。したがって、すべてのパッケージ要素をシームレスにデバッグできます。
注 複数のスクリプト タスクを含むパッケージをデバッグする場合、デバッガーは 1 つのスクリプト タスクにあるブレークポイントのみにヒットし、他のスクリプト タスクにあるブレークポイントを無視します。スクリプト タスクが Foreach ループ コンテナーまたは For ループ コンテナーの一部である場合、デバッガーは、ループの最初の繰り返し後にスクリプト タスクにあるブレークポイントを無視します。
詳細については、「スクリプトのデバッグ」を参照してください。スクリプト コンポーネントをデバッグする方法の推奨事項については、「スクリプト コンポーネントのコーディングおよびデバッグ」を参照してください。
説明のないエラーのトラブルシューティング
パッケージ開発中、Integration Services エラー番号に対応する説明のないエラーが発生した場合は、その説明を「SSIS のエラーおよびメッセージのリファレンス」で確認できます。現時点では、この一覧にトラブルシューティング情報は含まれていません。
|