2017-01-31 29 views
4

ネットワークドライブからExcelファイルをロードするためのSSISパッケージがあります。これは、コンテンツを読み込み、ファイルをアーカイブフォルダに移動するように設計されています。SSISパッケージはSSMSで動作しますが、エージェントジョブでは動作しません。

次のSQL文がSSMSウィンドウで実行されている場合は、すべて正常に動作します。

ただし、SQLエージェントジョブにコピーされてそこから実行されると、ファイルはロードも移動もされません。しかし、エージェントログから「成功」を示します。

同じことがまた、Windowsのプロキシアカウントさえして、代わりにT-SQLジョブの "SSISジョブ" に起こった。(SSMSのログインと同じアカウント)

Declare @execution_id bigint 
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'SG_Excel.dtsx', @[email protected]_id OUTPUT, @folder_name=N'ETL', @project_name=N'Report', @use32bitruntime=True, @reference_id=Null 
Select @execution_id 
DECLARE @var0 smallint = 1 
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @[email protected] 
EXEC [SSISDB].[catalog].[start_execution] @execution_id 
GO 

P.S.最初にネットワークドライブの相対パスが適用され、絶対パス(\\ server \ folder)に切り替えられます。それは問題を解決するものではありません。

+0

既にVisual Studio内でSSISパッケージを実行しようとしましたか? SSMSユーザーとプロキシユーザーでこれを試しましたか?警告/エラー/デバッグメッセージが表示されましたか? – Tyron78

+0

@ Tyron78、それはVisual Studioでうまくいきます。はい、プロキシを使用してSSIS SQLエージェントジョブを設定しようとしましたが、まだ動作していません。 – Echo

+0

@ Tyron78異常なことはジョブがエラーメッセージなしで「成功」を示すことです。 – Echo

答えて

0

個人的に私はファイルシステムタスクを避けます - 私はそれが信頼できないと分かりました。私はそれをScript Taskに置き換え、System.IO名前空間などの.NETメソッドを使用します。 File.Move。これらはより信頼性が高く、成熟したエラー処理を持っています。

ここでSystem.IO名前空間のための出発点です:

https://msdn.microsoft.com/en-us/library/ms404278.aspx

その他のバージョンリンクを使用して、関連する.NETのバージョンを選択してください。

0

私が過去にこのようなことを見たとき、私のパッケージは実行時と思っていたパスにアクセスしていなかったので、空のフォルダ&が成功して終了しました。

SSISは、可変既定値に戻るという厄介な習慣を持つことができます。 devで使用した別のパスを見ている可能性がありますか?たぶんテストとしてすべてのパスの値をハードコードですか? &すべての変数の実行時の値をダブルチェックする&パラメータ。

その他のロングショットがあることがあります。

  • 名前解決は、ネットワーク名は、実行時に正しく解決されていることを確認していますか?

  • 32/64ビットの問題。開発者は32ビット、ライブは64ビットを実行する傾向があります。ファイルパスに干渉することがありますか?たぶん実行時に32ビットに強制しますか? (;)問題を引き起こしている

0

SQL文は、文の終了を持っていないとの問題があります。私はサービスブローカーで同様の問題に直面している

Declare @execution_id bigint ; 
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'SG_Excel.dtsx', @[email protected]_id OUTPUT, @folder_name=N'ETL', @project_name=N'Report', @use32bitruntime=True, @reference_id=Null ; 
Select @execution_id ; 
DECLARE @var0 smallint = 1 ; 
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @[email protected] ; 
EXEC [SSISDB].[catalog].[start_execution] @execution_id ; 
GO 

..

1

SSISパッケージジョブズCEOは、SQL Serverエージェントのコンテキストで実行されます。どのアカウントがSQL Server上でSQL Serverエージェントを実行するようにセットアップされていますか?ネットワーク共有にアクセスできるドメインアカウントとして実行する必要があります。

または、ExcelファイルをSQL Server上のローカルフォルダにコピーして、パッケージがそのファイルにアクセスできるようにします。

関連する問題