Подтвердить что ты не робот

Создание/восстановление базы данных из резервной копии SQL Server Express

У меня нет SQL Server Management Studio на моей машине.

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

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

4b9b3361

Ответ 1

Даже с SQL Server Management Studio Express вы не сможете восстановить эту резервную копию. Версия Express, устанавливаемая с Visual Studio 2010, - это версия 2008 SQL Server - ваша резервная копия является одной из версий 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 - ваш друг для получения подробностей о синтаксисе!!).

Ответ 2

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

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

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

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

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

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

Ответ 3

Почему вы не получаете 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

Ответ 4

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

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

Нижеприведенное решение копируется по ссылке:

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

  • Посмотрите, что "Логическое имя" базы данных, которая была скопирована в файле .bak,

    ВОССТАНОВИТЬ ФИЛЛИСТОННО ОТ ДИСКА = 'C:\DatabaseBackups\dev2012021601.bak'

Это даст вам логическое имя базы данных и связанного с ней файла журнала. Предположим, что имена " dbname" и " dbname_log"

  • Теперь запустите следующую команду восстановления. Убедитесь, что база данных с именем, которое вы пытаетесь создать, уже не существует (в примере кода ниже 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.

Ответ 6

Я не хочу никого пугать, но я только что создал базу данных в SQL Server Express 2017 из резервной копии 2008 года (даже не 2008 R2) через SSMS без каких-либо проблем. Так в чем была проблема в первую очередь?

Обновление: упс, я опоздал на 8 лет... что вы можете сделать... но, по крайней мере, MS усердно трудился в перерывах, что я считаю хорошей новостью.