Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


microsoft-sql-server:t-sql-script-samples:script-to-backup-all-sql-server-databases

Как создать резервную копию всех баз данных экземпляра SQL Server

В некоторых случаях может возникнуть необходимость создания резервных копий сразу всех баз данных в экземпляре Microsoft SQL Server. В таком случае можно воспользоваться возможностями T-SQL запроса, представленного в статье Simple script to backup all SQL Server databases

В скрипте необходимо изменить значение переменной @path, указав каталог, в который будут сохранены резервные копии всех БД. При указании каталога, в который будут сохраняться резервные копии баз данных, следует помнить о том, что у учётной записи, от имени которой выполняется служба экземпляра SQL Server, должна иметь право на запись в этот каталог.

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

Исключая из резервной копии базу данных master следует помнить о том, что некоторые приложения могут использовать ключ шифрования, хранящийся в этой БД. Поэтому наличие данной БД в полной резервной копии всех баз может оказаться желательным.

TSQL-All-Databases-Backup.sql
-- объявление переменных
DECLARE @name VARCHAR(50)  
DECLARE @path VARCHAR(256)  
DECLARE @fileName VARCHAR(256)  
DECLARE @fileDate VARCHAR(20)
 
-- размещение каталога, в который будут сохранены резервные копии
SET @path = 'C:\Backup\'
 
-- определение формата имени файлов резервной копии
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) + '_' + 
REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','')
 
DECLARE db_cursor CURSOR READ_ONLY FOR  
SELECT name 
FROM master.sys.databases
WHERE name NOT IN ('master','model','msdb','tempdb') -- исключаемые базы данных
AND state = 0         -- только БД в состоянии Online
AND is_in_standby = 0 -- только БД не находящиеся в режиме Read Only для Log shipping
 
OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @name   
 
WHILE @@FETCH_STATUS = 0   
BEGIN   
   SET @fileName = @path + @name + '_' + @fileDate + '.BAK'  
   BACKUP DATABASE @name TO DISK = @fileName  
 
   FETCH NEXT FROM db_cursor INTO @name   
END   
 
 
CLOSE db_cursor   
DEALLOCATE db_cursor

Проверено на следующих конфигурациях:

Версия SQL Server
Microsoft SQL Server 2016 Service Pack 2 CU4 (13.0.5233.0)

Автор первичной редакции:
Алексей Максимов
Время публикации: 12.06.2019 12:57

Обсуждение

Ваш комментарий:
 

microsoft-sql-server/t-sql-script-samples/script-to-backup-all-sql-server-databases.txt · Последние изменения: 12.06.2019 13:26 — Алексей Максимов