Восстановить базу данных со всеми данными - PullRequest
0 голосов
/ 04 июня 2018

Я создал полную резервную копию базы данных (файл .bak).Затем я восстановил его на другой машине.Я использовал этот запрос для восстановления:

IF DB_ID('Northwind') IS NULL 
BEGIN
RESTORE DATABASE [Northwind]
FILE = N'Northwind_Data'
FROM DISK = N'C:\Program Files\Microsoft SQLServer\MSSQL10_50.SS2008\MSSQL\Backup\Northwind.bak'
WITH 
   FILE = 1, NOUNLOAD, STATS = 10,
   MOVE N'YOUR logical name of data file as shown by RESTORE FILELISTONLY command'
        TO N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SS2008\MSSQL\DATA\Northwind.mdf',
   MOVE N'YOUR logical name of Log file as shown by RESTORE FILELISTONLY command'
        TO N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SS2008\MSSQL\DATA\Northwind_0.LDF'
END

Но когда я использовал запрос выбора, данные все равно отображаются так же, как и до восстановления.Как решить эту проблему, если я хочу, чтобы все данные соответствовали друг другу.

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Предоставленный сценарий имеет условие IF, которое проверяет системную функцию DB_ID, чтобы увидеть, существует ли какая-либо база данных на SQL Server с тем же именем.Если проверка имеет значение true, то процесс восстановления пропускается. Для запуска этого сценария не должно быть базы данных с тем же именем на SQL Server.

Или можно изменить сценарий, включив в него параметр REPLACE длявосстановление баз данных.См. MSDN Link: https://docs.microsoft.com/en-us/sql/t-sql/statements/restore-statements-transact-sql?view=sql-server-2017#REPLACEoption

Теперь ваш скрипт должен выглядеть следующим образом:

   IF DB_ID('Northwind') IS NULL 
BEGIN  //This runs if no database of the name "Northwind" exist
RESTORE DATABASE [Northwind]
FILE = N'Northwind_Data'
FROM DISK = N'C:\Program Files\Microsoft SQLServer\MSSQL10_50.SS2008\MSSQL\Backup\Northwind.bak'
WITH 
   FILE = 1, NOUNLOAD, STATS = 10, 
   MOVE N'YOUR logical name of data file as shown by RESTORE FILELISTONLY command'
        TO N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SS2008\MSSQL\DATA\Northwind.mdf',
   MOVE N'YOUR logical name of Log file as shown by RESTORE FILELISTONLY command'
        TO N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SS2008\MSSQL\DATA\Northwind_0.LDF'
END
ELSE
BEGIN //This runs if there is a database with same name by replaceing it.
RESTORE DATABASE [Northwind]
FILE = N'Northwind_Data'
FROM DISK = N'C:\Program Files\Microsoft SQLServer\MSSQL10_50.SS2008\MSSQL\Backup\Northwind.bak'
WITH 
   FILE = 1, NOUNLOAD, REPLACE, STATS = 10, 
   MOVE N'YOUR logical name of data file as shown by RESTORE FILELISTONLY command'
        TO N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SS2008\MSSQL\DATA\Northwind.mdf',
   MOVE N'YOUR logical name of Log file as shown by RESTORE FILELISTONLY command'
        TO N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SS2008\MSSQL\DATA\Northwind_0.LDF'
END

Существуют отличные сторонние инструменты, которые могут выполнять эти резервные копии, восстанавливать и даже исправлять поврежденные файлы базы данных с помощьюлегко помочь вам в вашей работе.Ознакомьтесь с Stellar Database Toolkit .

ПРИМЕЧАНИЕ. У переполнения стека есть форум администратора базы данных https://dba.stackexchange.com/ отдельно от этого, который предназначен для вопросов базы данных, подобных этому.Опубликуйте вопросы, связанные с базой данных, для более быстрых и точных ответов.

Спасибо и HTH.

0 голосов
/ 05 июня 2018

Я думаю, что у вас есть проблема с вашим файлом .Bak.Попробуйте восстановить с помощью SSMS.

Откройте SSMS, нажмите «База данных» и выберите «Восстановить» введите описание изображения здесь

Выберите с устройства введите описание изображения здесь

Выберите файл .BAK введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...