1

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

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

错误是...

标题:Microsoft SQL Server 管理

工作室

服务器“195448-APP2”的恢复失败。(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:备份集包含一个数据库的备份,而不是现有的“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

4 回答 4

3

您可以简单地使用复制数据库向导。如果您想像专业人士一样使用 T-SQL,那么 RESTORE .. MOVE ... REPLACE 将完成您的预期:将两个文件移动到您想要的位置,并用备份中的内容替换数据库 B。A 不受影响。

于 2009-05-27T15:27:14.237 回答
3

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

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

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

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

于 2009-05-28T10:17:29.510 回答
1

可以将数据库从sql server 7、sql server 2000恢复到sql server 2005。可以通过restore和replace命令来实现

use master 

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

使用此脚本很容易在 sql server 中进行备份,无需任何外部工具。

查看使用示例还原

于 2009-07-23T14:42:43.527 回答
0

首先删除数据库 b。然后进行还原。

于 2009-05-28T10:27:32.300 回答