Как построить скрипт для резервного копирования всех баз данных в SQL Server? - PullRequest
1 голос
/ 04 августа 2009

Нам нужно сделать резервную копию 40 баз данных внутри экземпляра SQL Server. Мы создаем резервную копию каждой базы данных с помощью следующего скрипта:

BACKUP DATABASE [dbname1] TO  DISK = N'J:\SQLBACKUPS\dbname1.bak' WITH NOFORMAT, INIT,  NAME = N'dbname1-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO
declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N'dbname1' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'dbname1' )
if @backupSetId is null begin raiserror(N'Verify failed. Backup information for database ''dbname1'' not found.', 16, 1) end
RESTORE VERIFYONLY FROM  DISK = N'J:\SQLBACKUPS\dbname1.bak' WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND
GO

Мы хотели бы добавить в скрипт функциональность взятия каждой базы данных и замены ее в приведенном выше скрипте В основном это скрипт, который будет создавать и проверять каждую резервную копию базы данных с помощью движка.

Я ищу что-то вроде этого:

For each database in database-list
    sp_backup(database) // this is the call to the script above.
End For

есть идеи?

Ответы [ 5 ]

2 голосов
/ 05 августа 2009

Использовать SqlBackupAndFTP . Выберите «Резервное копирование всех несистемных баз данных»

1 голос
/ 05 августа 2009

Вы также сказали «проверить» ... Для этого потребуется 2-й оператор для каждой базы данных ( RESTORE VERIFYONLY , а также другие предлагаемые ответы.

Я бы исследовал, используя планы обслуживания , чтобы включить обслуживание индекса тоже ...

1 голос
/ 04 августа 2009

Может быть, вы можете проверить хранимую процедуру sp_MSForEachDB .

EXEC sp_MSForEachDB 'EXEC sp_backup ?'

Где? mark обозначает текущую базу данных на каждой итерации.

0 голосов
/ 28 января 2013

SQL Backup Master имеет возможность создавать резервные копии всех баз данных на данном экземпляре сервера, а затем отправлять резервные копии в Dropbox, FTP, Amazon S3, Google Drive или в локальную / сетевую папку.

0 голосов
/ 04 августа 2009

Что-то вроде:

DECLARE @SQL varchar(max)
SET @SQL = ''

SELECT @SQL = @SQL + 'BACKUP ' + Name + ' To Disk=''c:\' + Name + '.bak'';'
    FROM sys.sysdatabases

EXEC(@SQL)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...