1

Stackoverflow ユーザーの皆様へ

特定のレポートを PDF ファイルで生成し、その PDF をネットワーク ディレクトリにコピーしてから、ソース ディレクトリの PDF ファイルを削除する SQL エージェント ジョブがあります。

SQL ジョブは 2 つのステップで構成されています。 1. レポートを生成します。 2. レポートをネットワーク上の場所にコピーします。

ステップ 2 では、pdf ファイルのコピーと削除を処理するバット ファイルを作成しました。

バットファイルは次のとおりです。

set source_dir=C:\Reports\Energie\Uur
set dest_dir=\\KWS2-WEB-SERVER\Share\Reports\Uur

C:\Windows\System32\Robocopy.exe %source_dir% %dest_dir% /MOV /Z

ただし、ジョブを実行すると、2 番目のステップでハングします。ステータスは「実行中」のままです。

これは、ステップで述べた行です (実行するバットファイルの場所):

cmd.exe /c "C:\Reports\rapport_uur_copy.bat"

私のジョブ設定は次のとおりです。

ステップ1

タイプ: オペレーティング システム (CmdExec) 成功した場合: 次の手順に進みます

失敗時: 失敗を報告するジョブを終了します

ステップ2

タイプ: オペレーティング システム (CmdExec)

成功時: 成功を報告するジョブを終了します

失敗時: 失敗を報告するジョブを終了します

いくつかの事実:

  • ネットワーク ディレクトリに対する読み取り/書き込み権限があります
  • 管理者アカウント (ログイン ユーザー、デフォルト) として手順を実行します。
  • ステップ 1 は成功します
  • Windows Server 2008 R2 Standard を実行しています
  • SQL Server 2008 R2 を使用しています
  • cmd から手動でスクリプトを実行すると、(管理者アカウントで) 動作します。

前もって感謝します!

4

1 に答える 1

3

バッチ スクリプトがローカルではないドライブを使用する必要がある場合、たとえば共有には常に特別な権限が必要です。これは、次のことを意味しyou need to use an account to run the script which is allowed to log on as batch task in secpolます - (開始タイプ secpol.msc をクリックして開始 - MSC スナップインで [ローカル ポリシー] を選択 - [ユーザー権利の割り当て] を選択 - 右) [バッチ ジョブとしてログオン] をクリックし、[プロパティ] を選択します。[ユーザーまたはグループの追加] をクリックし、関連するユーザーを含めます。)

あまりにも通常のバッチでは使用できません\\drives。たとえば、char を使用してドライブとしてマップする必要があります。V:\driveこのマッピングgot to be made by the batch itselfは、user account used running the batch私のスクリプトでこれを経験しました。

于 2013-03-26T06:53:36.083 に答える