ローカル マシンのバッチ ファイルから、リモートの SQL Server データベースに対して次の T-SQL スクリプトを呼び出します。
MyBatchFile.bat
:
"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"
-S RemoteIPaddress -U username -P userPassword -i D:\MyBackups\backup_db.sql
backup_db.sql
:
declare @backupfile nvarchar(255)
set @backupfile = N'D:\MyLocalBackups\' +
CONVERT(varchar(4), datepart(yy, getdate())) +
right('0' + CONVERT(varchar(2), datepart(mm, getdate())),2) +
right('0' + CONVERT(varchar(2), datepart(dd, getdate())),2) +
N'_' +
right('0' + CONVERT(varchar(2), datepart(hour, getdate())),2) +
right('0' + CONVERT(varchar(2), datepart(minute, getdate())),2) +
N'_MyDbBackup.bak'
BACKUP DATABASE MyDatabase TO DISK = @backupfile
WITH NOFORMAT, INIT, NAME = N'MyDatabase Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
そして、バックアップを実行した場所からローカルマシンに配置したいのですが、バックアップを実行して代わりにリモートマシンに配置しようとしているように見えるため、以下のエラーが発生します。
バックアップ デバイス 'D:\MyLocalBackups\20131011_1200_MyDbBackup.bak' を開けません。オペレーティング システム エラー 21 (デバイスの準備ができていません。)
これどうやってするの?
.bat
ファイルと.sql
ファイルは、リモートではなくローカルマシンに配置されることに注意してください。