|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.06.2022, 12:44 | #1 |
Новичок
Джуниор
Регистрация: 29.06.2022
Сообщений: 2
|
Восстановление копии базы в автоматическом режиме
Здравствуйте всем! Я новичок в SQL. Есть такая задача:
1. Найти последний бэкап базы данных (\\10.10.10.161\Disk5\BackupSQl\sib prodwork) в сетевой папке 2. Выгнать всех пользователей из копии (sql5\reports_sp) 3. Восстановить бэкап в эту копию (sql5\reports_sp) Почти всё готово, у меня есть три переменные в скрипте, которые нужно вводить самому (@BackupTakePath, @VosstanPath, @VosstanLogPath). Как сделать, чтобы например путь именно последнего бэкапа заносился в переменную автоматически? Есть идея записывать путь в txt, но не могу найти как это делать на SQL. Мой скрипт: DECLARE @BackupTakePath as nvarchar(500) = N'\\10.10.10.161\Disk5\BackupSQl\si bprodwork\Gilev.bak', -- откуда брать бэкап (нужен полный бэкап) @VosstanPath as nvarchar(500) = N'D:\Bases\reports_sp.mdf', -- куда восстанавливать базу @VosstanLogPath as nvarchar(500) = N'D:\Bases\reports_sp_log.ldf', -- куда восстанавливать log @DBName as nvarchar(40) = 'reports_sp' -- шаг 1: обрубить соединение USE master; -- выйти из БД самому ALTER DATABASE reports_sp SET SINGLE_USER WITH ROLLBACK IMMEDIATE; -- выгнать всех остальных пользователей: ALTER DATABASE reports_sp SET OFFLINE; -- запретить сеансам восстанавливать соединение: -- шаг 2: Восстановить БД RESTORE DATABASE reports_sp FROM DISK = @BackupTakePath WITH FILE = 1, MOVE N'Gilev' TO @VosstanPath, MOVE N'Gilev_log' TO @VosstanLogPath, NOUNLOAD, REPLACE, STATS = 5 -- шаг 3: Восстановить соединение ALTER DATABASE reports_sp SET ONLINE; ALTER DATABASE reports_sp SET MULTI_USER; GO И код нахождения последнего бэкапа: DECLARE @DBName as nvarchar(40) = 'prodaji', @Path as nvarchar(500) USE msdb; SELECT physical_device_name FROM dbo.backupmediafamily WHERE media_set_id = (SELECT top 1 media_set_id FROM dbo.backupset WHERE dbo.backupset.database_name = @DBName ORDER BY backup_finish_date DESC); ЗАРАНЕЕ СПАСИБО! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
создание копии базы Access | v.v.1992 | C/C++ Базы данных | 0 | 08.04.2012 17:24 |
Резервные копии | gamaiunov_alex | Microsoft Office Access | 4 | 03.11.2010 23:58 |
Копии таблиц | Spaun | БД в Delphi | 2 | 25.05.2010 11:02 |
буфер обмена в автоматическом режиме | vizor9 | Общие вопросы Delphi | 1 | 03.05.2010 15:31 |
Cохранение и восстановление базы | Canadec | БД в Delphi | 1 | 23.10.2007 02:34 |