23

我的机器上没有 SQL Server Management Studio。

我有一个数据库备份(SQL Server 2008 R2)。我的机器上安装了装有 Visual Studio 2010 Ultimate 的 SQL Server Express。

如何在数据库上恢复此备份并将其附加到 SQL Server Express?
有没有使用 SQL Managment Studio Express 的解决方案?

4

4 回答 4

29

即使使用 SQL Server Management Studio Express,您也无法恢复此备份。与 Visual Studio 2010 一起安装的 Express 版本是SQL Server 2008版- 您的备份来自 SQL Server 2008 R2版本 - 这些备份无法恢复到 2008 版本。

您将需要下载SQL Server 2008 R2 Express 版本,并且当您使用它时 - 使用 Management Studio 获取该版本!安装这个,然后你就可以恢复你的数据库备份了。

如果您真的想在不使用 Mgmt Studio 的情况下恢复数据库 - 您当然可以使用RESTORET-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 在线图书是您的朋友,可以了解有关语法的详细信息!!)。

于 2011-06-02T17:08:09.837 回答
17

迟到了,但希望对正在查看此内容的其他人有用……

如果问题是在没有管理工作室的情况下恢复,这可以通过使用 sqlcmd 轻松解决,正如 marc_s 已经指出的那样。

但是,如果真正的问题是在不使用 SSMS 的情况下在 SQL 2008 上恢复 2008 R2 备份,那么唯一的解决方案是使用可以读取备份并生成用于创建模式和插入数据的脚本的第三方工具。

想法是在 SQL 2008 上创建空数据库,并使用第三方工具将其与使用 2008 R2 生成的备份进行比较。

我在以前的工作中使用过ApexSQL Diff和A ​​pexSQL Data Diff并取得了很好的成功,但Red Gate(SQL 比较)和Idera(比较工具集)也有很好的工具。如果您在网上查找,您可能会发现更多……

免责声明:我不隶属于上述任何公司……</p>

于 2013-09-13T11:07:46.180 回答
12

为什么不获取 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
于 2011-06-02T17:03:11.880 回答
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”是什么

    从磁盘恢复文件列表 = 'c:\DatabaseBackups\dev2012021601.bak'

这将为您提供数据库的逻辑名称及其关联的日志文件。假设名称是“<strong>dbname”和“<strong>dbname_log”</p>

  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 文件中的所有表和数据。

于 2012-07-14T10:56:16.503 回答