Я называю это T-SQL скрипт для удаленной базы данных SQL Server из пакетного файла в моей локальной машине:Создание удаленного резервного копирования базы данных в локальную папку
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
И я хочу, чтобы резервная копия была помещена на мою локальную машину, откуда я ее выполнил, но, похоже, она пытается сделать резервную копию и поместить ее в удаленный e, поэтому я получаю ниже ошибки:
Cannot open backup device 'D:\MyLocalBackups\20131011_1200_MyDbBackup.bak'. Operating system error 21(The device is not ready.).
Как это сделать?
Обратите внимание, что файл .bat
и файл .sql
размещены на моих машинах, а не на пульте дистанционного управления.
Это предполагает, что удаленный сервер может попасть в локальный ящик, который не всегда бывает с сетевыми и правил брандмауэра , – acfrancis
@acfrancis, да, наверное, я должен был упомянуть об этом. Я просто предположил, что общие проблемы доступа к сети применяются к этому подходу. –
Я имею тенденцию предполагать обратное: база данных заблокирована и доступна только из определенных мест. Если это так, вам просто нужно перевернуть свое решение вверх ногами: создать резервную копию в папку на удаленном сервере и скопировать ее по пути UNC. Это также более надежно, поскольку процесс резервного копирования не зависит от сети. – acfrancis