Восстановление базы данных MS SQL Server из копии на сетевом диске

Здравствуйте, дорогие читатели.
В одной из своих заметок я рассказывал как сделать копию базы данных MS SQL на сетевой диск. Сегодня я хочу рассказать как восстановить базу из копии, которая находится на сетевом диске. Скрипты, приведенные ниже, актуальны для MS SQL 2008R2 и MS SQL 2012, также необходимым условием является запуск Microsoft SQL Server с использованием доменной учетной записи.
Пример.
Резервное копирование ведется по схеме: полная копия делается 1 раз в неделю и каждый день делается разностная копия. Необходимо восстановить базу данных  в новую базу и в текущую.
1. Восстановление в новую базу, т.е. базы еще нет и она будет создана из копии.
USE master
go
exec sp_addumpdevice ‘disk’, ‘BaseBackup1’ ,‘\\IP-Адрес или имя компьютера\папка с копией\TestFULL_backup_201310130530.bak’ ;
go
exec sp_addumpdevice ‘disk’, ‘BaseBackup2’ ,‘\\IP-Адрес или имя компьютера\папка с копией\TestDay_backup_201310160030.bak’ ;
go
RESTORE DATABASE [TestForTest]
FILE = N’Test’ —указывается логическое имя файла БД, из которой были созданы копии
FROM   BaseBackup1
WITH   FILE = 1 ,  
MOVE N’Test’ TO N’K:\DATA\TestForTest.mdf’ , —Первый параметр — это логическое имя файла БД из которой была создана копия, второй параметр — путь, где будет находиться файл БД на диске новой базы
MOVE N’Test_log’ TO N’M:\LOG\TestForTest_log.ldf’, —Первый параметр — это логическое имя файла лога БД из которой была создана копия, второй параметр — путь, где будет находиться файл лога на диске новой базы
NORECOVERY ,  NOUNLOAD ,  REPLACE , STATS = 10
GO
RESTORE DATABASE [TestForTest]
FILE = N’Test’ —указывается логическое имя файла БД, из которой были созданы копии
FROM   BaseBackup2
WITH   FILE = 1 ,   RECOVERY , NOUNLOAD ,   STATS = 10
GO
exec sp_dropdevice ‘BaseBackup1’
GO
exec sp_dropdevice ‘BaseBackup2’
GO
2. Восстановление в существующую базу.
 
USE master
go
exec sp_addumpdevice ‘disk’, ‘BaseBackup1’ ,‘\\IP-Адрес или имя компьютера\папка с копией\TestFULL_backup_201310130530.bak’ ;
go
exec sp_addumpdevice ‘disk’, ‘BaseBackup2’ ,‘\\IP-Адрес или имя компьютера\папка с копией\TestDay_backup_201310160030.bak’ ;
go
RESTORE DATABASE [TestForTest]
FILE = N’Test’ —указывается логическое имя файла БД, из которой были созданы копии
FROM   BaseBackup1
WITH   FILE = 1 ,  
NORECOVERY ,  NOUNLOAD ,  REPLACE , STATS = 10
GO
RESTORE DATABASE [TestForTest]
FILE = N’Test’ —указывается логическое имя файла БД, из которой были созданы копии
FROM   BaseBackup2
WITH   FILE = 1 ,   RECOVERY , NOUNLOAD ,   STATS = 10
GO
exec sp_dropdevice ‘BaseBackup1’
GO
exec sp_dropdevice ‘BaseBackup2’
GO
Сами скрипты можно скачать здесь.
Как посмотреть логические имена файлов БД и лога. Необходим в Management Studio открыть свойства БД из которой была сделана копия и перейти на вкладу File.
СвойстваБД

Популярность: 12%

Добавить комментарий для Денис Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

  1. Ни фига не работает ваш скрипт.. ошибка на ошибке и ошибкой погоняет. Я не спец по sql серверам, но хотя бы можно было скрипты вывести в отдельный файлик для загрузки, чтобы хотя бы синтаксические ошибки не исправлять.

    • Здравствуйте. Прошу прощения что не приложил скрипты для скачивания.
      Все ошибки из-за искажения кавычек.
      Еще хочется сказать что эти скрипты нельзя применять как есть, это как шаблон куда надо вставлять свои данные.
      В заметку добавил ссылку для скачивания

      • Это я понял, что там подставлять надо, только он все равно встал на строке, где restore database, и я так и не понял что ему надо. Пришлось пожертвовать одной базой, грохнуть ее, на ее место архив загнать и оттуда уже восстанавливать. А сейчас я уже 4-й час создаю базу, которую грохнул..и осталось еще где то полчаса..

  2. Я надеюсь правильно понял, что в команде
    RESTORE DATABASE [TestForTest] TestForTest надо поменять на имя своей БД, которая у меня 1cvict, т.е. у меня команда должны выглядеть RESTORE DATABASE [1cvictn]

  3. Месяца через три-четыре мне надо будет опять восстанавливать базу и именно по сети, так что буду вас спрашивать про то, что ему не нравится. Хорошо?!

  4. Естественно, все работает, если выправить искажение вебом кавычек. Большое спасибо, теоретически знал, что из сети можно восстанавливать, но никогда не делал. Вдруг приспичило — сервер забили так, что бэкап положить локально некуда.

    Еще база остается в состоянии Restoring, наверное можно впихнуть в опции основного скрипта, либо

    RESTORE DATABASE [db_name] WITH RECOVERY

  5. Немного доработанный скрипт, для тех у кого просто полный бэкап

    USE master
    go
    exec sp_addumpdevice ‘disk’, ‘BaseBackup1′ ,’\\dsm\usbshare\upp_backup.bak’;
    go
    RESTORE DATABASE [upp]
    FILE = N’upp’ —указывается логическое имя файла БД, из которой были созданы копии
    FROM BaseBackup1
    WITH FILE = 1 ,
    MOVE N’upp’ TO N’C:\MSSQLBase\upp.mdf’ , —Первый параметр — это логическое имя файла БД из которой была создана копия, второй параметр — путь, где будет находиться файл БД на диске новой базы
    MOVE N’upp_log’ TO N’C:\MSSQLBase\upp_log.ldf’, —Первый параметр — это логическое имя файла лога БД из которой была создана копия, второй параметр — путь, где будет находиться файл лога на диске новой базы
    NORECOVERY , NOUNLOAD , REPLACE , STATS = 10
    GO
    exec sp_dropdevice ‘BaseBackup1’
    GO