1

ローカル マシンのバッチ ファイルから、リモートの 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ファイルは、リモートではなくローカルマシンに配置されることに注意してください。

4

2 に答える 2