6

dtexec を使用して SSIS パッケージを実行しています。パッケージは私のシステムの BIDS で正常に動作します。スケジュールに従ってパッケージを実行する SQL サーバー エージェント ジョブを作成するとき。パッケージの実行ステップは、SSIS パッケージではなく、T-SQL タスクとしてスケジュールされます)。ジョブはエラーを報告しませんが、サーバー上の目的の宛先で出力Excelファイルを作成することすらありません。

さらに、コマンドシェルでコマンドを個別に実行すると、以下に示すエラーが返されます。断続的に、ファイルのコピーに使用する FileSystem タスクでもエラーが返され、コピー元またはコピー先が存在しないというメッセージが表示されます!! BIDS で同じ変数値が機能するのに、SQL ジョブが失敗するのはなぜですか?

Started:  7:33:27 PM
Error: 2012-10-26 19:33:27.60
   Code: 0xC0016016
   Source:
   Description: Failed to decrypt protected XML node "DTS:Password" with error 0
x8009000B "Key not valid for use in specified state.". You may not be authorized
to access this information. This error occurs when there is a cryptographic err
or. Verify that the correct key is available.
End Error
Error: 2012-10-26 19:33:27.78
   Code: 0xC00F9304
   Source: GICSReport Connection manager "Excel Connection Manager"
   Description: SSIS Error Code DTS_E_OLEDB_EXCEL_NOT_SUPPORTED: The Excel Conne
ction Manager is not supported in the 64-bit version of SSIS, as no OLE DB provi
der is available.
End Error
Error: 2012-10-26 19:33:27.78
   Code: 0xC020801C
   Source: Data Flow Task Excel Destination [22]
   Description: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAG
ER.  The AcquireConnection method call to the connection manager "Excel Connecti
on Manager" failed with error code 0xC00F9304.  There may be error messages post
ed before this with more information on why the AcquireConnection method call fa
iled.
End Error
Error: 2012-10-26 19:33:27.78
   Code: 0xC0047017
   Source: Data Flow Task SSIS.Pipeline
   Description: component "Excel Destination" (22) failed validation and returne
d error code 0xC020801C.
End Error
Error: 2012-10-26 19:33:27.78
   Code: 0xC004700C
   Source: Data Flow Task SSIS.Pipeline
   Description: One or more component failed validation.
End Error
Error: 2012-10-26 19:33:27.79
   Code: 0xC0024107
   Source: Data Flow Task
   Description: There were errors during task validation.
End Error
DTExec: The package execution returned DTSER_FAILURE (1).
Started:  7:33:27 PM
Finished: 7:33:27 PM
Elapsed:  0.343 seconds

助けてください!:) ....すべての変数、接続マネージャー、およびすべてを構成ファイルに追加する必要がありますか? 現在、変数と接続マネージャーの ppty 値をいくつか追加しただけですが、効果的に機能するコンボはないようです。

4

2 に答える 2

11

私が対処する最初のエラーは、「利用できる OLE DB プロバイダーがないため、Excel 接続マネージャーは SSIS の 64 ビット バージョンではサポートされていません」です。

すぐに使用できる Excel ドライバーは、32 ビット アドレス空間にのみ存在します。BIDS/SSDT は 32 ビット アプリケーションであるため、Excel のソースと宛先は問題なく機能します。ただし、コマンドライン/SQL エージェントから実行する場合は、DTEXEC プログラムの 32 ビット バージョンを明示的に使用する必要があります。

ステップ 1 は、エージェントが自分自身として実行するサーバー上で、コマンド ラインからパッケージを実行できることを確認することです。SQL Server が通常の場所にインストールされていると仮定すると、次の DTEXEC.exe のいずれかを使用できる可能性があります。

C:\Program Files\Microsoft SQL Server\90\DTS\Binn\DTExec.exe
c:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe
C:\Program Files\Microsoft SQL Server\110\DTS\Binn\DTExec.exe
C:\Program Files\Microsoft SQL Server\120\DTS\Binn\DTExec.exe
C:\Program Files (x86)\Microsoft SQL Server\90\DTS\Binn\DTExec.exe
C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe
C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\DTExec.exe
C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\DTExec.exe

(x86) バージョンを使用する必要があります。将来の読者の皆さん、たまたま 32 バージョンの Windows (Windows 2003 など) を使用している場合、最初の 3 つしか選択肢はありません。Vivek のエラー メッセージが示すように、彼は SSIS パッケージを 64 ビット モードで実行しています。

dtexecはコマンド ライン スイッチ/X86を提供し、32 ビットと 64 ビットの両方の操作で同じ実行可能ファイルをシームレスに使用できるようにします。うそ!ドキュメントはそれを呼び出しますが、ドキュメントを読むのは誰ですか?

このオプションは、SQL Server エージェントでのみ使用されます。コマンド プロンプトで dtexec ユーティリティを実行する場合、このオプションは無視されます。

したがって、明示的なパスを指定してパッケージを実行する必要があります

C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe /file C:\folder\GICSReport.dtsx

出力に「保護された XML ノードの復号化に失敗しました」と表示され、構成ファイルを使用していると述べているため、PackageProtectionLevel をデフォルトの EncryptSensitiveWithUserKey から DontSaveSensitive に変更できる可能性が高くなります。この機能は、機密データ (パスワード) の偶発的な公開を防ぐために存在しますが、構成ファイルで既に処理しているため、問題にはなりません。...考えてみると、それは実際には他のパッケージ保護レベルのいずれかによるエラーである可能性があります。

とにかく、最初に 32 ビットの実行可能ファイルから実行してみてください。それでもうまくいかない場合は、示されているようにパッケージの保護レベルを変更してみてください。これらのいずれかでパッケージが期待どおりに実行される場合は、SQL エージェントから同じコマンドを実行してみてください。

すべてうまくいく場合は、これを回答としてマークしてください。そうでない場合は、現在生成されているエラーでチケットを更新してください。詳細をお尋ねします。

于 2012-10-26T18:17:26.277 に答える
0

dtexecExcelインポートを含むtransact SQLからSSISパッケージを実行しようとしている場合の解決策は次のとおりです。

  1. 次のコードを含むバッチ ファイルを作成します。

    cd C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\ DTEXEC.exe /DE "パスワード" /F "C:\mySSISfolder\package.dtsx"

  2. バッチ ファイルを指すショートカットを作成properties\advancedし、ショートカットを管理者として実行するように設定します。

  3. あなたのtransact sqlプロシージャから、次のコマンドを実行します

    exec xp_cmdshell 'C:\myfolder\runssis_sc.lnk'

于 2014-04-08T01:18:04.503 に答える