Создание / восстановление базы данных из резервной копии SQL Server Express - PullRequest
23 голосов
/ 02 июня 2011

На моем компьютере нет SQL Server Management Studio.

У меня есть резервная копия базы данных (SQL Server 2008 R2). На моем компьютере установлен SQL Server Express, установленный с Visual Studio 2010 Ultimate.

Как мне восстановить эту резервную копию в базе данных и подключить ее к SQL Server Express?
Есть ли какое-либо решение без использования SQL Managment Studio Express?

Ответы [ 4 ]

29 голосов
/ 02 июня 2011

Даже с SQL Server Management Studio Express вы не сможете восстановить эту резервную копию. Редакция Express, устанавливаемая вместе с Visual Studio 2010, представляет собой версию SQL Server 2008 - ваша резервная копия является одной из выпуска SQL Server 2008 R2 - эти резервные копии не могут восстановить на версию 2008.

Вам потребуется загрузить SQL Server 2008 R2 Экспресс-версию , и пока вы работаете с ней - получите версию с Management Studio! Установите это, и тогда вы сможете восстановить резервную копию базы данных.

Если вы действительно хотите восстановить свою базу данных без использования Mgmt Studio - вы, конечно, можете использовать оператор RESTORE в T-SQL и запустить его с помощью инструмента командной строки sqlcmd :

RESTORE DATABASE YourDatabaseName
FROM DISK = N'(path to your BAK file)'
WITH FILE = 1,  
MOVE N'(your DB name)' TO N'(your SQL path)database.MDF',  
MOVE N'(your DB name)_LOG' TO N'(your SQL path)database_LOG.LDF',  
NOUNLOAD,  
REPLACE,  
STATS = 10
GO

(и, конечно, есть также BACKUP команда , которую вы можете использовать аналогичным образом - MSDN Books Online - ваш друг для подробностей о синтаксисе !! ).

17 голосов
/ 13 сентября 2013

Позднее, но, надеюсь, полезно для тех, кто просматривает это….

Если проблема восстанавливается без Management Studio, это можно легко решить с помощью sqlcmd, как уже указывалось marc_s.

Однако, если настоящая проблема заключается в восстановлении резервной копии 2008 R2 на SQL 2008 без использования SSMS, то единственным решением является использование сторонних инструментов, которые могут читать резервные копии и генерировать сценарии для создания схемы и вставки данных.

Идея заключается в создании пустой базы данных на SQL 2008 и использовании стороннего инструмента для сравнения ее с резервной копией, созданной в 2008 R2.

Я использовал ApexSQL Diff и ApexSQL Data Diff с хорошим успехом в моей предыдущей работе, но есть и хорошие инструменты от Red Gate (SQL Compare) и Idera (набор инструментов для сравнения).Если вы посмотрите в Интернете, вы, вероятно, найдете гораздо больше ...

Отказ от ответственности: я не связан ни с одной из компаний, упомянутых выше ...

12 голосов
/ 02 июня 2011

Почему вы не получаете SQL Managment Studio Express?Это бесплатно и должно позволить вам администрировать локальные экземпляры sql express.

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796

BACKUP DATABASE [AdventureWorks] TO  
    DISK = N'\\nas\Backup\L40\SQL2005\AdventureWorks_backup_200702120215.bak' 
    WITH NOFORMAT, NOINIT,  NAME = N'AdventureWorks-Full Database Backup', 
    SKIP, NOREWIND, NOUNLOAD,  STATS = 10

RESTORE DATABASE [AdventureWorksNew] 
    FROM  DISK = N'\\nas\Backup\L40\SQL2005\AdventureWorks_backup_200702120215.bak' 
    WITH  FILE = 1,  
    MOVE N'AdventureWorks_Data' TO N'C:\Data\MSSQL.1\MSSQL\Data\AdventureWorksNew_Data.mdf',  
    MOVE N'AdventureWorks_Log' TO N'C:\Data\MSSQL.1\MSSQL\Data\AdventureWorksNew_Log.ldf',  
    NOUNLOAD,  STATS = 10
7 голосов
/ 14 июля 2012

Следующая ссылка предоставляет такое же решение, как и marc_s, и идет еще глубже.Мне удалось успешно создать новую БД из файла резервной копии с помощью решения, указанного в ссылке ниже.

http://codeonaboat.wordpress.com/2012/02/16/sql-server-2008-creating-a-database-from-a-bak-file/

Решение, приведенное ниже, скопировано с указанной выше ссылки:

  1. В SSMS откройте окно запроса в базе данных master сервера базы данных.Вот где вы будете выполнять следующие запросы:

  2. Посмотрите, что означает «LogicalName» базы данных, резервная копия которой находится в файле .bak:

    RESTORE FILELISTONLY FROM DISK = 'c: \ DatabaseBackups \ dev2012021601.bak'

Это даст вам логическое имя базы данных и связанного с ней файла журнала.Предположим, что имена: « имя_БД » и « имя_бД_лога »

  1. Теперь выполните следующую команду восстановления.Убедитесь, что база данных с именем, которое вы пытаетесь создать, еще не существует (в приведенном ниже примере кода dbForSocialMigration не существует).
RESTORE DATABASE dbForSocialMigration
FROM DISK = 'c:\DatabaseBackups\dev20120307.bak'
WITH
MOVE 'dbname' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\dbForSocialMigration.mdf',
MOVE 'dbname_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\dbForSocialMigration_log.mdf'

C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA - это каталог, в котором SQL Express обычно хранит свои файлы данных.Вы можете найти каталог, который использует ваш сервер базы данных, выбрав в нем базу данных, щелкнув правой кнопкой мыши и открыв диалоговое окно свойств и выбрав опцию «Файлы» слева.

Это должно сработать, и в этот момент выдолжен иметь доступ к базе данных «dbForSocialMigration», содержащей все таблицы и данные из файла .bak.

...