Восстановление базы данных 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.
СвойстваБД

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

Запись опубликована в рубрике Настройка и оптимизация с метками . Добавьте в закладки постоянную ссылку.

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

  1. Виктор говорит:

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

    • Сергей Сопелев говорит:

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

      • Виктор говорит:

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

  2. Виктор говорит:

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

  3. Виктор говорит:

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

Добавить комментарий

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