0

基本的に、BIDS でスタンドアロン パッケージとして実行するジョブがあり、SQL Server エージェントで実行している間は正しく完了しません (エラー メッセージは表示されません)。

ジョブの手順は次のとおりです。

1) テーブルからすべての行を削除します。

2) For each ループを使用して、Excel スプレッドシートからテーブルを埋めます。

3) テーブルをクリーンアップします。

このMS ページ(手順 1 と 2)を試しましたが、サーバー側のセキュリティから変更を開始する必要はありませんでした。

また、このページのSQLServerCentral.com 、解決策はありません。

エラー ログや修正プログラムを入手するにはどうすればよいですか?

これは、純粋な管理者やプログラミングではない質問の1つであるため、Server Faultから再投稿したことに注意してください。

これを実行しているプロキシ アカウントとしてログインしました。ジョブはスタンドアロンで実行されますが、Excel テーブルが空であると不平を言いますか?

4

3 に答える 3

1

SQL エージェント ジョブを介して呼び出された SSIS パッケージから "返された状態" を追跡する方法を次に示します。運が良ければ、これのいくつかがあなたのシステムに当てはまるかもしれません。

  • ジョブがストアド プロシージャを呼び出す
  • プロシージャーは DTEXEC 呼び出しを作成します (12 個以上のパラメーターを使用)
  • プロシージャーは、呼び出しをパラメーター (@Command) として xp_cmdshell を呼び出します。
  • SSIS パッケージの実行
  • 「ローカル」SSIS 変数は 1 に初期化されます
  • エラーが発生した場合、SSIS の「フロー」は、そのローカル変数を 0 に設定するステップに渡されます。
  • 最後の手順で、式を使用して、SSIS プロパティ "ForceExecutionResult" をそのローカル変数に設定します (1 = 成功、0 = 失敗)。
  • 完全な形式の SSIS 呼び出しでは、次のように戻り値が格納されます。

    EXECUTE @ReturnValue = master.dbo.xp_cmdshell @Command

...そして、 SSIS から返される値のホストを取得できるため、面倒になります。SSIS の手順を実行している間にアクションとアクティビティを DB テーブルに記録し、それを参照して問題を解決しようとしました (これは、以下の @Description の由来です)。関連するコードとコメントは次のとおりです。

--  Evaluate the DTEXEC return code
SET @Message = case
                 when @ReturnValue = 1 and @Description <> 'SSIS Package' then 'SSIS Package execution was stopped or interrupted before it completed'
                 when @ReturnValue in (0,1)   then ''  --  Package success or failure is logged within the package
                 when @ReturnValue = 3        then 'DTEXEC exit code 3, package interrupted'
                 when @ReturnValue in (4,5,6) then 'DTEXEC exit code ' + cast(@Returnvalue as varchar(10)) + ', package could not be run'
                 else 'DTEXEC exit code ' + isnull(cast(@Returnvalue as varchar(10)), '<NULL>') + ' is an unknown and unanticipated value'
               end
--  Oddball case: if cmd.exe process is killed, return value is 1, but process will continue anyway
--  and could finish 100% succesfully... and @ReturnValue will equal 1.  If you can figure out how,
--  write a check for this in here.

最後に、「SSIS の実行中に、プロセスの実行時間が長すぎるために管理者ジョーカーが CMD セッションを (たとえば、タスク マネージャーから) 強制終了した場合」の状況を参照しています。私が知っていることですが、私がこれを書いているとき、彼らは非常に偏執的だったので、私はそれを調べなければなりませんでした...

于 2010-04-21T13:54:47.420 に答える
0

提案に感謝して、私は最終的にこれを修正しました。

基本的に、実行していたプロキシユーザーアカウントでWindowsにログインすると、「ファイルごとの列挙子が空です」などのエラーが表示され始めました。

プロジェクトファイルをコピーしてテストを開始しましたが、接続プロパティを変更したにもかかわらず、For Eachループボックスのプロパティにファイルパス(N:/)が残っていることがわかりました。エラー状態を処理するようになったら、より簡単になります。また、変数マッピングを再作成する必要がありました。

人々がパッケージ全体を再作成するのも不思議ではありません。

これで修正され、機能します。

于 2010-04-26T13:01:38.743 に答える
0

SSIS に組み込まれているロギングを使用しないのはなぜですか? ログをデータベース テーブルに送信し、それらを別のテーブルに解析して、よりユーザー フレンドリーな形式にし、実行されたすべてのパッケージのすべてのステップを確認できます。そしてすべてのエラー。

于 2010-04-21T19:19:12.040 に答える