1

私はSSISに比較的慣れていません。私が働いている環境では、Dev データベースにしかアクセスできません。パッケージを作成してテストし、DBA に送信して UAT 環境で実行します。XML ファイルをインポートしているこれらのパッケージの 1 つは、SQL Server エージェント ジョブとして実行すると断続的に失敗します。最終的な解決策は信頼性の高いシステム向けであるため、これは問題です。テスト ロードは約 46000 ファイルで、1000 ~ 2000 ファイルをインポートした後、インポートはさまざまに失敗します。

非常に有益なエラー メッセージを以下に示します。私は少し調査を行いましたが、このエラーで見つけることができる唯一の情報 (せいぜい大ざっぱです) は、同時実行の問題について語っています。そのため、最大実行数を 1 に戻しました...それでも同じ問題です。

Executed as user: \. Microsoft (R) SQL Server Execute Package Utility Version 9.00.4035.00 for 32-bit Copyright (C) Microsoft Corp 1984-2005. All rights reserved. Started: 2:19:57 PM. The return value was unknown. The process exit code was -1073741819. The step failed.

誰かが原因または解決策を提案できますか? それとも、より多くの診断情報を取得する方法でしょうか?

4

2 に答える 2

3

実行時にログ対応イベントをキャプチャするようにパッケージを構成します。
SSIS メニューをクリックします -> Logging SQL Server のログ プロバイダーを使用するのが好きです。これにより、'sp_ssis_addlogentry' という名前のシステム ストアド プロシージャと 'sysssislog' という名前のテーブルが作成されます。これにより、少なくとも、失敗しているパッケージ内のコンポーネントが得られるはずです。

推測する必要がある場合は、未処理の ScriptTask に例外があり、タスクは DTS.TaskResult を設定していません。

DTS.TaskResult = (int)ScriptResults.Failure

ScriptTask コードを次のようにラップしてみてください (ただし、問題が何であるかがわかったら、catch(Exception Ex) を削除してください)。

try
{
    bool fireAgain = false;
    // Some Code
    Dts.Events.FireInformation(0, "", "Some logable info: I Love Puppies", String.Empty, 0, ref fireAgain);
    Dts.TaskResult = (int)ScriptResults.Success;
}
catch (Exception Ex)
{
    Dts.Events.FireError(1, "", "FAILURE: " + Ex.Message, "", 0);  // this will show up in the sysssislog table
    Dts.TaskResult = (int)ScriptResults.Failure;
}
于 2011-02-23T22:09:04.143 に答える
1

あなたのフローは完全にシーケンシャルですか、それとも並行して進行中のタスクがありますか? 並列タスクがある場合は、2 つのフローのタイミングに問題がある可能性があります (つまり、一方のフローが使用しているデータにアクセスしている可能性があります... または、SSIS が対処できない何かがある可能性があります)。

パッケージの MaxConcurrentExecutables を 1 に設定してみてください (つまり、パッケージの実行時に 1 つのスレッドのみを使用するように強制します)。このプロパティは、パッケージを開いて [制御フロー] ウィンドウを表示しているときに、デザイナーで表示/設定できます。このプロパティを 1 に設定すると、これが発生している問題のタイプであるかどうかを判断するのに役立ちます。問題が解決した場合は、その設定のままにするか、パッケージをいじって、元の問題の原因となっている並列処理を排除しようとすることができます。

MaxConcurrentExecutables フラグへのリンクは次のとおりです: http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.package.maxconcurrentexecutables(v=SQL.90).aspx

于 2011-02-15T15:10:06.430 に答える