2011-06-02 196 views
23

我的機器上沒有SQL Server Management Studio。從備份創建/恢復數據庫SQL Server Express

我有一個數據庫備份(SQL Server 2008 R2)。在我的機器上安裝了隨Visual Studio 2010最終安裝的SQL Server Express。

如何在數據庫上恢復此備份並將其附加到SQL Server Express?
有什麼解決方案沒有使用SQL Managment Studio Express?

回答

29

即使使用SQL Server Management Studio Express,您也無法還原此備份。與Visual Studio 2010一起安裝的Express版本是版本 SQL Server - 您的備份是一個來自SQL Server 2008的R2版本 - 那些備份不能將恢復到2008版本。

您將需要下載SQL Server 2008 R2 Express version,當您處於此狀態時 - 使用Management Studio獲取版本!安裝這個,然後你就可以恢復你的數據庫備份。

如果你真的不想使用管理Studio來恢復數據庫 - 當然你也可以使用一個RESTORE語句的T-SQL和使用sqlcmd command line tool運行此:

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 command,你可以用類似的方式使用 - MSDN Books Online是你的朋友關於語法的細節!!)。

+0

R2是否在Visual Studio 2010最終版後發佈? – Shahin 2011-06-02 17:12:18

+1

@shaahin:是的 - 相較於2010年被打包 – 2011-06-02 17:12:49

+1

其實你可以複製並粘貼在VS 2010的查詢窗口中的代碼,並執行後,被釋放。沒有管理工作室需要,你不需要輸入命令行。有一件事需要關注的是,最好在備份之前刪除全文目錄(對於生產數據庫,您可以創建原始數據庫的克隆並將目錄放入克隆),因爲看起來(我不太確定)SQL express不支持全文索引。 – 2013-02-14 01:45:54

12

你爲什麼不拿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 
+0

它的好辦法,但有沒有wihout SQL梟雄Studio Express的任何解決方案? – Shahin 2011-06-02 17:05:53

+2

我已經更新了我的解決方案以演示如何從SQL執行它 – 2011-06-02 17:09:32

7

以下鏈接提供了與marc_s類似的解決方案,並且它變得更加深入。我能夠使用下面的鏈接中提供的解決方案成功地從備份文件創建一個新的數據庫。

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

下面將溶液從上面的鏈接複製:

  1. 在SSMS,在數據庫服務器的主數據庫中打開一個查詢窗口。這就是你將運行以下查詢的地方。

  2. 看什麼的已經在.bak文件被備份的數據庫的「LogicalName」是

    RESTORE FILELISTONLY FROM DISK = 「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」填充了.bak文件中的所有表和數據。

16

下旬的一個,但希望對大家有用其他人誰正在查看這...。

如果問題沒有恢復Management Studio中這可以很容易地通過使用SQLCMD作爲marc_s已經指出解決。

但是,如果真正的問題是恢復2008年SQL 2008 R2備份,而無需使用SSMS那麼唯一的解決辦法是使用第三方工具,可以讀取備份,併爲創建模式和插入數據的腳本。

的想法是在2008年SQL創建空數據庫,並使用第三方工具來比較它與2008 R2生成的備份。

我在我以前的工作中使用ApexSQL DiffApexSQL Data Diff具有良好的成功,但也有來自Red Gate好的工具(SQL比較)和Idera(比較工具集)。如果你在網上查找,你可能會發現更多......。

免責聲明:我沒有與任何上述公司的下屬......