将一台计算机的SQL Server数据库备份还原到另一台

时间:2017-07-25 14:57:25

标签: sql-server database database-restore

情景:

  • 我在一台计算机上有一个数据库备份(<?xml version="1.0" encoding="UTF-8"?> <envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://example.com/api/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://xml.apache.org/xml-soap" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" soap-env:encodingstyle="http://schemas.xmlsoap.org/soap/encoding/"> <body> <login> <parameters xsi:type="ns2:Map"> <item> <key xsi:type="xsd:string">username</key> <value xsi:type="xsd:string"></value> </item> <item> <key xsi:type="xsd:string">password</key> <value xsi:type="xsd:string"></value> </item> </parameters> </login> </body> </envelope>
  • 我把它复制到另一台机器到某个路径,让我们说abc.bak
  • 我使用以下T-SQL来尝试和恢复 - 但是我收到了错误。

使用的T-SQL:

G:\SQLDB\backup\master_copy.bak

生成错误:

  

Msg 5133,Level 16,State 1,Line 1
  文件“C:\ SQLDB \ masterdb \ master_blank.mdf”的目录查找失败,出现操作系统错误3(系统找不到指定的路径。)。

     

Msg 3156,Level 16,State 3,Line 1
  文件'coop_demo'无法还原到'C:\ SQLDB \ masterdb \ master_blank.mdf'。使用WITH MOVE标识文件的有效位置。

这里指定的路径来自新机器中不存在的旧机器。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

Jeroen建议的是,你可能会遗漏一些文件..所以看到所有文件都使用下面的命令..

restore filelistonly from disk ='your .bak path' with file=1

上述命令的输出将显示已备份的所有文件,然后您可以使用restore with replace

所以如果恢复文件列表在下面显示为逻辑文件名

logicalname  
db_Data
db_Data1
db_log

现在可以使用

RESTORE DATABASE New_DB
FROM DISK = 'G:\SQLDB\backup\master_copy.bak' WITH 
MOVE 'db_Data' TO 'G:\SQLDB\livedb\new_db_data.mdf',
MOVE 'db_Data1' TO 'G:\SQLDB\livedb\new_db_data.ndf',
MOVE 'db_lof TO 'G:\SQLDB\livedb\new_db_log.log',
REPLACE