Sql Server 2005还原失败

时间:2009-05-27 15:11:08

标签: sql-server-2005 restore

运行sql server 2005我有数据库A.我正在尝试从A的备份恢复到数据库B.我想保留数据库A并从之前的数据集创建一个新的测试数据库B.

我尝试创建B并从.bak恢复并从管理工作室将数据库恢复到B.

错误是......

  

TITLE:Microsoft SQL Server Management

     

演播室

     

服务器恢复失败   '195448-APP 2'。   (Microsoft.SqlServer.Smo)

     

如需帮助,请点击:   http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.1399.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Restore+Server&LinkId=20476

     

------------------------------附加信息:

     

System.Data.SqlClient.SqlError:The   备份集包含一个备份   除现有'B'以外的数据库   数据库。 (Microsoft.SqlServer.Smo)

     

如需帮助,请点击:   http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.1399.00&LinkId=20476

     

------------------------------按钮:

     

确定

我发现这个代码片段让我犹豫不决,想知道它是否能解决我在恢复数据库过程中更改mdf和ldf位置的问题,或者它是否完全取代了数据库A的项目。

ALTER DATABASE AdventureWorks
SET SINGLE_USER WITH
ROLLBACK IMMEDIATE
RESTORE DATABASE AdventureWorks
FROM DISK = 'C\:BackupAdventureworks.bak'
WITH MOVE 'AdventureWorks_Data' TO 'C:\Data\datafile.mdf',
MOVE 'AdventureWorks_Log' TO 'C:\Data\logfile.ldf',
REPLACE

[http://blog.sqlauthority.com/2007/04/30/sql-server-fix-error-msg-3159-level-16-state-1-line-1-msg-3013-level-16-state-1-line-1/][1]

对我来说,我会成功......

RESTORE DATABASE B
FROM DISK = 'C:\backupofA.bak'
WITH    
MOVE 'B' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\B.mdf',
MOVE 'B_log' to 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\B_log.ldf',
REPLACE

我不知道的是它是否会影响数据库A.我希望替换引用与B相关的文件。

或者它应该是

RESTORE DATABASE B
FROM DISK = 'C:\backupofA.bak'
WITH    
MOVE 'A' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\B.mdf',
MOVE 'A_log' to 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\B_log.ldf',
REPLACE

如果有人可以帮我解决错误和/或确认此修复程序,我将非常感激,因为它不是我正在玩的数据库。

感谢。

4 个答案:

答案 0 :(得分:3)

您可以简单地使用Copy Database Wizard。 如果你想像专业人士那样做并使用T-SQL RESTORE .. MOVE ... REPLACE将按预期执行:在您想要的位置移动两个文件,并用备份中的内容替换数据库B. A将不受影响。

答案 1 :(得分:3)

如果我是你,我会使用向导:在Sql Server Management Studio中右键单击“数据库”并选择“还原数据库...”。此对话框/向导将完全按照您的要求执行操作 - 只需选择要从中还原的源.bak文件/数据库,输入要还原到的数据库的名称,然后单击“确定”。

一些注意事项 - 如果您输入的数据库名称尚不存在(听起来这就是您想要做的事情),它将为您创建该数据库。如果输入现有数据库的名称,它将尝试还原到该数据库。如果尝试从由其他数据库组成的备份还原到现有数据库,则它将失败,但是您可以通过转到“选项”并选中“覆盖现有数据库”复选框来强制Sql Server覆盖现有数据库。

此外,如果要还原现有数据库的备份以创建该数据库的新第二个副本,您可能会发现该向导在尝试使用与当前正在使用的数据库文件路径相同的数据库文件路径创建数据库时失败由源数据库。要解决此问题,您需要单击“选项”并将所有“还原为”文件路径更改为尚不存在的文件。

您也可以使用此向导生成SQL脚本,而不是实际执行实际还原(单击顶部的“脚本”按钮),如果您想学习如何在原始中执行此类操作,这将非常方便而不是SQL。

答案 2 :(得分:1)

可以将数据库从sql server 7,sql server 2000恢复到sql server 2005。 它可以通过使用restore和with命令

来实现
use master 

restore database mydatabase from disk ='c:\mybackup.bak' with replace 

使用此脚本在没有任何外部工具的情况下在sql server中进行备份很容易。

查看Restore with Example

答案 3 :(得分:0)

首先删除数据库b。然后进行恢复。