タスクスケジュールではネットワークドライブの割り当てを使ってはいけない

タスクスケジュールに別サーバーへログファイルを移動するバッチを登録する、などよくある話です。

例えば、Aサーバーにはログがたまっていて、Aサーバー上では毎朝3時にBサーバーのバックアップフォルダにログを移動するとします。

ネットワークドライブの割り当てたドライブ情報はユーザー単位でその情報を保存しているということの理解が重要です。
つまりAサーバー上で下記のようなコマンドで事前にBサーバーのフォルダをネットワークドライブ(Q:)に割り当てていても、
それはそのバッチを実行したユーザーからしかみえないのです。

net use q: \\192.168.10.1\shared password /user:username

つまり事前に割り当てをしていても、タスクを実行しているのは別ユーザーになります。
そのタスクの実行ユーザーではその割り当てたドライブがみえないのです。

解決策として、バッチ処理自身にネットワーク割り当てのコマンドを記載すればいいとありました。
確かにそれでうまくいきそうです。が何故かうまくいきませんでした。。。

結局私は、

①事前にAサーバーとBサーバーに同じ名前とパスワードのタスク専用ユーザーを作成し、
②Bサーバーにはそのタスク専用ユーザーにアクセス権限を与え、
③Aサーバー上で実行するタスクの実行ユーザーもタスク専用ユーザーにし、
④バッチ処理上ではネットワークドライブの指定を \\192.168.10.1\shared\backaup.txt

と指定することで解決しました。

ネットワークドライブの割り当ては、タスクの実行ユーザーからは見えないのです。
ipアドレス、もしくはホスト名を使用してパスを使用することが肝心です。
なおこのようなフルパスの表記はUNC(Universal Naming Convention)と呼ばれています。

タイトルとURLをコピーしました