Простой скрипт для резервного копирования всех баз данных SQL Server

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,752
Реакции
1,448
Credits
25,205
Простой скрипт для резервного копирования всех баз данных SQL Server

Иногда вещи, которые кажутся сложными, оказываются гораздо проще, чем кажется, и в этом заключается сила использования языка T-SQL для решения повторяющихся задач. Одной из таких задач может быть необходимость резервного копирования всех баз данных на сервере. Это не так уж сложно, если у вас несколько баз данных, но я видел несколько серверов, где на одном экземпляре SQL Server было 100+ баз данных. Для резервного копирования баз данных можно использовать SQL Server Management Studio или даже использовать Maintenance Plans, но использование T-SQL - гораздо более простой и быстрый подход.
Код:
DECLARE @name NVARCHAR(256) -- database name 
DECLARE @path NVARCHAR(512) -- path for backup files 
DECLARE @fileName NVARCHAR(512) -- filename for backup 
DECLARE @fileDate NVARCHAR(40) -- used for file name
 
-- specify database backup directory
SET @path = 'C:\test\' 
 
-- specify filename format
SELECT @fileDate = CONVERT(NVARCHAR(20),GETDATE(),112)
 
DECLARE db_cursor CURSOR READ_ONLY FOR 
SELECT name
FROM master.sys.databases
WHERE name NOT IN ('master','model','msdb','tempdb')  -- exclude these databases
AND state = 0 -- database is online
AND is_in_standby = 0 -- database is not read only for 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

Скрытое содержимое могут видеть только пользователи групп(ы): Premium, Местный, Свои