Автоматизируем "перезаливку" баз (Скрипты для SQL-Server - Часть 1)

Администрирование - Архивирование (backup)

Предлагаю вашему вниманию несколько SQL-скриптов (для MS SQL-Server) для автоматизации процесса резервного копирования и восстановления баз данных. Скрипты для восстановления позволяют "перезаливать" базы данных, т. е. восстанавливать одну базу из копий другой базы данных. Все скрипты формируют лог для вывода и при необходимости могут отправлять результат работы по электронной почте.

 

Видео в формате вебинара с подробным разбором всех скриптов:

 

 

Ну и, непосредственно, сами разобранные в вебинаре скрипты под спойлерами ниже. Все переменные собраны в соответствующем блоке в начале скриптов. Для отправки электронной почты используется предварительно настроенный профиль электронной почты компоненты DataBase Mail. О настройке компоненты можно прочитать, например, здесь. Все скрипты много раз опробованы в бою и протестированы на версиях MS SQL 2008, 2012, 2016.

 

Скрипт для создания резервной копии указанной базы данных:

 

 

Скрипт для создания резервных копий нескольких баз данных (по определенному условию):

 

 

Скрипт для восстановления указанной базы данных из созданной резервной копии другой базы данных:

 

 

Скрипт для восстановления указанной базы данных из имеющихся (созданных ранее) копий другой базы данных:

 

 

Эти и другие скрипты доступны также в репозитории: https://github.com/Tavalik/SQL_TScripts

Надеюсь, что данные скрипты помогут вам автоматизировать процесс создания резервных копий и "перезаливки" баз данных.

Все вебинары по скриптам для SQL:

  1. Автоматизируем перезаливку баз (Часть 1): //catalog.1c-e.ru/public/799857/
  2. Регламентные операции с индексами в MS SQL Server (Часть 2): //catalog.1c-e.ru/public/803209/
  3. Еще немного полезных SQL-скриптов (Часть 3): //catalog.1c-e.ru/public/807843/

 

Скачать файлы

Наименование Файл Версия Размер
Все скрипты в архиве (часть 1)
.zip 10,23Kb
15.03.18
12
.zip 10,23Kb 12 Скачать

См. также

Комментарии
Сортировка: Древо
1. Armando 1385 16.03.18 23:14 Сейчас в теме
Еще частый сценарий это создание резервной копии БД на одном сервере и восстановление в БД на другом сервере.
Например, рабочие базы на своих серверах, а тестовые на отдельном. И надо загрузить копию рабочей базы в тестовую базу.
3. Armando 1385 17.03.18 23:25 Сейчас в теме
(2) Жесть какая. Почему-то я скептически отношусь к oscript.
В принципе у нас все тоже самое, но на bat файлах.
5. webester 28 18.03.18 06:45 Сейчас в теме
(3) Действительно жесть.
- Это все авно!
- Почему?
- Ну я так решил...
4. nvv1970 18.03.18 01:59 Сейчас в теме
Блин, ну это вообще детский сад какой-то...
Где например определение имени последнего бэкапа, если бэкапы идут с разными именами?

SEL ECT  @@Servername AS ServerName ,
        d.Name AS DBName ,
        b.Backup_finish_date ,  b.[type],
        bmf.Physical_Device_name
FR OM    sys.databases d
        INNER JOIN msdb..backupset b ON b.database_name = d.name AND b.[type] = 'D'
        INNER JOIN msdb.dbo.backupmediafamily bmf ON b.media_set_id = bmf.media_set_id
ORDER BY d.NAME , b.Backup_finish_date DESC;
6. German 997 20.03.18 06:50 Сейчас в теме
Лучше этого еще ничего не встречал
https://www.red-gate.com/products/dba/sql-backup/ дорого, но оно того стоит
7. Mi11er 74 20.03.18 12:20 Сейчас в теме
8. ershz 21.03.18 16:57 Сейчас в теме
В секции, где восстановление базы - неплохо бы отключить существующие подключения

DECLARE @SQLString1 NVARCHAR(4000)
-------------------------------------------

BEGIN TRY 
 set @SQLstring1= 'alt er   database [' +@DBName_To+ ']  SET SINGLE_USER WITH ROLLBACK IMMEDIATE'
 exec @SQLstring1
	EXEC sp_executesql @SQLString

set @SQLstring1= 'alt er   database [' +@DBName_To+ ']  SET MULTI_USER ' 
exec @SQLstring1

END TRY
Показать
9. bforce 408 02.05.18 17:21 Сейчас в теме
Хорошо, когда разработчик делает что-то своими руками. Это повышает компетентность и это здорово!
Но, как обычно, все уже придумано до нас. Ну и на github есть https://github.com/olahallengren/sql-server-maintenance-solution.
Silenser; ershz; +2 Ответить
11. blackhole321 712 09.05.18 16:45 Сейчас в теме
Ну вот же нормальный подход, и без всяких там консольных утилит с параметрами ;)
12. Tavalik 1471 11.05.18 06:55 Сейчас в теме
(11)
Спасибо, конечно. Только там эти же скрипты, с той лишь разницей, что запуск из командной строки.
Оставьте свое сообщение