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

Sha*_*hin 23 sql-server database-restore sql-server-express

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

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

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

mar*_*c_s 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的情况下恢复数据库 - 你当然可以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
Run Code Online (Sandbox Code Playgroud)

(当然,还有一个BACKUP命令,您可以以类似的方式使用 - MSDN联机丛书是您的朋友,有关语法的详细信息!!).


小智 17

迟到的,但希望对正在观看这个的其他人有用....

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

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

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

我在之前的工作中使用了ApexSQL DiffApexSQL Data Diff,但是Red Gate(SQL Compare)和Idera(比较工具集)也有很好的工具.如果你在网上查找,你可能会发现更多......

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


Chr*_*ken 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
Run Code Online (Sandbox Code Playgroud)

  • 我已经更新了我的解决方案,以显示如何从SQL执行此操作 (2认同)

Roh*_*pta 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 ='c:\ DatabaseBackups\dev2012021601.bak'恢复FILELISTONLY

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

  1. 现在运行以下restore命令.确保具有您尝试创建的名称的数据库尚不存在(在下面的代码示例中,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'
Run Code Online (Sandbox Code Playgroud)

C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA是SQL Express通常保存其数据文件的目录.您可以通过从中选择数据库来找到数据库服务器正在使用的目录,右键单击并打开属性对话框,然后从左侧选择"文件"选项.

这应该工作,此时您应该能够访问数据库"dbForSocialMigration",其中填充了.bak文件中的所有表和数据.