Резервное копирование баз данных одним скриптом на языке Transact-SQL
-- Декларируем переменные
declare @basename varchar(100)
declare @path varchar(150)
declare @i cursor
-- Заполняем курсор @i именами баз данных и открываем его
set @i = cursor scroll for select NAME from sys.databases where NAME not in ('model','msdb','master','tempdb')
open @i
-- Считываем в переменную @basename имя базы из курсора @i и запускаем цикл по статусу курсора
fetch next from @i into @basename
while @@FETCH_STATUS =0 begin
-- Заполняем переменную @path путём до файла для резервной копии базы и выполняем сам процесс копирования
set @path = 'd:\backup\'+@base+'.bak'
backup database @basename to disk = @path WITH NOFORMAT, INIT, NAME = @basename, SKIP, NOREWIND, NOUNLOAD, STATS = 10
-- Подключаемся к базе и сжимаем файл журнала до 7 МиБ - неработает :(
-- USE @basename
-- DBCC SHRINKFILE (@basename_log,7)
-- Считываем в переменную @basename имя следующей базы из курсора @i и переходим к проверке условия цикла while
fetch next from @i into @basename
end
-- Закрываем курсор и запускаем этот скрипт на исполнение
close @i
GO
Вывод имён баз списком
select NAME from sys.databases where NAME not in ('model','msdb','master','tempdb')
GO