从备份SQL Server Express创建/还原数据库

时间:2011-06-02 17:02:03

标签: sql-server sql-server-express database-restore

我的计算机上没有SQL Server Management Studio。

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

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

5 个答案:

答案 0 :(得分:29)

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

您需要下载SQL Server 2008 R2 Express version,然后在使用Management Studio时获取版本!安装它,然后您就可以恢复数据库备份。

如果你真的想在不使用Mgmt Studio的情况下恢复数据库 - 你当然可以在T-SQL中使用RESTORE语句并使用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是您的朋友,有关语法的详细信息!!)。

答案 1 :(得分:17)

迟到但希望对正在观看此内容的其他人有用......

如果问题是在没有管理工作室的情况下进行恢复,可以使用sqlcm已经指出的sqlcmd轻松解决这个问题。

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

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

我在以前的工作中使用ApexSQL DiffApexSQL Data Diff取得了很大的成功,但是Red Gate(SQL比较)和Idera以及比较工具集也提供了很好的工具)。如果你在网上查找,你可能会发现更多......

免责声明:我不隶属于上述任何公司......

答案 2 :(得分: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

答案 3 :(得分:7)

以下链接提供与marc_s类似的解决方案,它甚至更深入。我能够使用下面链接中提供的解决方案从备份文件成功创建新数据库。

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

以下解决方案是从以上链接复制的:

  1. 在SSMS中,在数据库服务器的master数据库中打开查询窗口。您可以在此处运行以下查询。

  2. 查看.bak文件中备份的数据库的“LogicalName”是什么

      

    从DISK = RESTORE FILELISTONLY   'C:\ DatabaseBackups \ dev2012021601.bak'

  3. 这将为您提供数据库及其关联日志文件的逻辑名称。让我们假设名称是“ dbname ”和“ dbname_log

    1. 现在运行以下restore命令。确保具有您尝试创建的名称的数据库尚不存在(在下面的代码示例中,dbForSocialMigration不存在)。
    2. 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文件中的所有表和数据。

答案 4 :(得分:2)

备份类似。这是使用Management Studio Express进行恢复: http://www.serverintellect.com/support/sqlserver/restore-database-ssmse.aspx