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


На моей машине нет среды SQL Server Management Studio.

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

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

5 23

5 ответов:

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

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

Если вы действительно хотите восстановить свою базу данных без использования 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 ваш друг для получения подробной информации о синтаксисе!!).

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

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

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

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

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

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

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

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

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

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

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

  2. Смотрите, что такое "LogicalName" базы данных, которая была скопирована в .файл bak - это

    ВОССТАНОВЛЕНИЕ FILELISTONLY С ДИСКА = 'c:\DatabaseBackups\dev2012021601.бак '

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

  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" заполняются все таблицы и данные из нее .файл бака.

Резервное копирование аналогично. Вот восстановление с помощью Management Studio Express: http://www.serverintellect.com/support/sqlserver/restore-database-ssmse.aspx