2

バッチファイルを書きました。初めてなのでまだ苦手です。UNC フォルダ パスからデータベース バックアップ ファイルをコピーし、ローカル マシンに貼り付けます。ファイル名は毎晩変更され、日時が追加されます。つまり、file_backup_201306112210.bak

以下は、以下のバッチファイルに書いたものです

set datetimef=%date:~-4%%date:~3,2%%date:~0,2%
cmd /c echo F | xcopy "\\FileName\S$\DBs\file_backup_%datetimef%*.bak" "E:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\file_backup.bak"

奇妙なことに、時々機能しますが、他の日は失敗します。手動で実行しようとしましたが、それでも失敗します。

何が悪いのか教えてください。

4

2 に答える 2

2

これを試して、ログ ファイルを調べて、
A) サーバーにアクセスできるか
どうか、および B) filespec に一致するファイルが存在するかどうかを確認します。

@echo off
set datetimef=%date:~-4%%date:~3,2%%date:~0,2%
echo copying "file_backup_%datetimef%*.bak" on %date% at %time% >>"%userprofile%\desktop\log.txt"
dir "\\FileName\S$\DBs\file_backup_%datetimef%*.bak" >>"%userprofile%\desktop\log.txt" 2>&1

echo f|xcopy "\\FileName\S$\DBs\file_backup_%datetimef%*.bak" "E:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\file_backup.bak"
于 2013-06-12T10:11:53.543 に答える
0

正確に何が機能しないのか少し混乱しますが、バックアップファイル名の日付と日時について、できることがいくつかあります。

@ECHO OFF
:: http://blog.g-ball.com/2010/08/26/year-month-day-date-batch-script/
:: Formatting the date into a YYYYMMDD format and setting it to the variable,  varTodaysDate
SET varYYYY=%DATE:~10,4%
SET varMM=%DATE:~4,2%
SET varDD=%DATE:~7,2%
SET varTodaysDate=%varYYYY%%varMM%%varDD%

バッチの起動に問題がある場合は、バッチの起動時にログインしているかどうかを確認してください。サーバー管理からバッチファイルを起動していますか? はいの場合は、その構成を確認できます(編集:実行するアカウントを確認し、ユーザーがログオンしているかどうかを実行するオプションを選択し、タスクを実行し、次のユーザーアカウントを使用します:管理者)。権利の問題がある場合は、 http: //www.joeware.net/freetools/tools/cpau/ からの CPAU をお勧めします。管理者としてバッチを実行し、ダウンロードして、次のように含めます。

CPAU.exe -u 1 -p 1 -ex "cmd /c echo F | xcopy "\\FileName\S$\DBs\file_backup_%varTodaysDate%*.bak" "E:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\file_backup.bak"" -wait > log.txt 2> ./logerror.txt

共有ドライブから xcopy を実行している場合は、 CPAU.exe -u username -p passwordを置き換える必要がありますが、お勧めしません。誰かがバッチ ファイルを取得した場合のセキュリティ上の脆弱性です。私が逆に推奨できるのは、同じ機能を実行し、あるディレクトリから別のディレクトリにコピーするスクリプトを備えた WinSCP です。

于 2013-06-12T09:37:02.480 に答える