我有一周前的Database1备份。在调度程序中每周进行备份,我得到一个.bak文件。现在我想要处理一些数据,所以我需要将其恢复到另一个数据库- Database2。
我看到过这个问题:在同一台pc上使用不同的名称恢复SQL Server数据库,建议步骤是重命名原始db,但我不在这个选项中,因为我在生产服务器中,我不能真正做到这一点。
是否有其他方法将其恢复到Database2,或者至少如何浏览该.bak文件的数据?
谢谢。
Ps:上面链接的第二个答案看起来很有希望,但它总是以错误告终:
恢复文件列表异常终止
您可以创建一个新的数据库,然后使用“恢复向导”启用覆盖选项或:
查看备份文件内容:
RESTORE FILELISTONLY FROM DISK='c:\your.bak'
注意结果中.mdf和.ldf的逻辑名称,然后:
RESTORE DATABASE MyTempCopy FROM DISK='c:\your.bak'
WITH
MOVE 'LogicalNameForTheMDF' TO 'c:\MyTempCopy.mdf',
MOVE 'LogicalNameForTheLDF' TO 'c:\MyTempCopy_log.ldf'
这将使用your.bak的内容创建数据库MyTempCopy。
(不要创建MyTempCopy,它是在恢复过程中创建的)
示例(恢复名为'creditline'的db的备份到'MyTempCopy'):
RESTORE FILELISTONLY FROM DISK='e:\mssql\backup\creditline.bak'
>LogicalName
>--------------
>CreditLine
>CreditLine_log
RESTORE DATABASE MyTempCopy FROM DISK='e:\mssql\backup\creditline.bak'
WITH
MOVE 'CreditLine' TO 'e:\mssql\MyTempCopy.mdf',
MOVE 'CreditLine_log' TO 'e:\mssql\MyTempCopy_log.ldf'
>RESTORE DATABASE successfully processed 186 pages in 0.010 seconds (144.970 MB/sec).
您可以创建一个新的数据库,然后使用“恢复向导”启用覆盖选项或:
查看备份文件内容:
RESTORE FILELISTONLY FROM DISK='c:\your.bak'
注意结果中.mdf和.ldf的逻辑名称,然后:
RESTORE DATABASE MyTempCopy FROM DISK='c:\your.bak'
WITH
MOVE 'LogicalNameForTheMDF' TO 'c:\MyTempCopy.mdf',
MOVE 'LogicalNameForTheLDF' TO 'c:\MyTempCopy_log.ldf'
这将使用your.bak的内容创建数据库MyTempCopy。
(不要创建MyTempCopy,它是在恢复过程中创建的)
示例(恢复名为'creditline'的db的备份到'MyTempCopy'):
RESTORE FILELISTONLY FROM DISK='e:\mssql\backup\creditline.bak'
>LogicalName
>--------------
>CreditLine
>CreditLine_log
RESTORE DATABASE MyTempCopy FROM DISK='e:\mssql\backup\creditline.bak'
WITH
MOVE 'CreditLine' TO 'e:\mssql\MyTempCopy.mdf',
MOVE 'CreditLine_log' TO 'e:\mssql\MyTempCopy_log.ldf'
>RESTORE DATABASE successfully processed 186 pages in 0.010 seconds (144.970 MB/sec).