2011-06-02 195 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(比较工具集)。如果你在网上查找,你可能会发现更多......。

免责声明:我没有与任何上述公司的下属......