我有一周前的Database1备份。在调度程序中每周进行备份,我得到一个.bak文件。现在我想要处理一些数据,所以我需要将其恢复到另一个数据库- Database2。
我看到过这个问题:在同一台pc上使用不同的名称恢复SQL Server数据库,建议步骤是重命名原始db,但我不在这个选项中,因为我在生产服务器中,我不能真正做到这一点。
是否有其他方法将其恢复到Database2,或者至少如何浏览该.bak文件的数据?
谢谢。
Ps:上面链接的第二个答案看起来很有希望,但它总是以错误告终:
恢复文件列表异常终止
下面介绍如何将备份恢复为具有唯一db名称的附加db。
对于SQL 2005,这工作得非常快。我相信更新的版本也会有同样的效果。
首先,您不必让原始db脱机。但为了安全起见,我还是想。在我的例子中,我将挂载我的“账单”数据库的克隆,它将被命名为“billingclone”。
1)做好计费数据库的备份
2)为了安全起见,我将原件下线如下:
3)打开一个新的查询窗口
* *重要!保持这个查询窗口打开,直到全部完成!你需要从这个窗口恢复数据库!
现在输入以下代码:
-- 1) free up all USER databases
USE master;
GO
-- 2) kick all other users out:
ALTER DATABASE billing SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- 3) prevent sessions from re-establishing connection:
ALTER DATABASE billing SET OFFLINE;
3)接下来,在管理工作室,在对象资源管理器中单击数据库,选择“恢复数据库”
4)在“To Database”字段中输入新的名称。即billingclone
5)在“Source for Restore”中,点击“From Device”,点击…导航按钮
6)单击Add并导航到您的备份
7)在“恢复”旁打勾(选择要恢复的备份集)
8)接下来选择上方LH角的OPTIONS页面
9)现在在RESTORE AS中编辑数据库文件名。对db和日志都这样做。即billingclone。MDF和billingclone_log.ldf
10)现在点击OK,等待任务完成。
11)在对象资源管理器中点击刷新,你将看到你的新db
12)现在你可以把你的账单数据库重新上线了。使用脱机计费时使用的相同查询窗口。使用该命令:
-- 1) free up all USER databases
USE master; GO
-- 2) restore access to all users:
ALTER DATABASE billing SET MULTI_USER WITH ROLLBACK IMMEDIATE;GO
-- 3) put the db back online:
ALTER DATABASE billing SET ONLINE;
完成了!
下面介绍如何将备份恢复为具有唯一db名称的附加db。
对于SQL 2005,这工作得非常快。我相信更新的版本也会有同样的效果。
首先,您不必让原始db脱机。但为了安全起见,我还是想。在我的例子中,我将挂载我的“账单”数据库的克隆,它将被命名为“billingclone”。
1)做好计费数据库的备份
2)为了安全起见,我将原件下线如下:
3)打开一个新的查询窗口
* *重要!保持这个查询窗口打开,直到全部完成!你需要从这个窗口恢复数据库!
现在输入以下代码:
-- 1) free up all USER databases
USE master;
GO
-- 2) kick all other users out:
ALTER DATABASE billing SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- 3) prevent sessions from re-establishing connection:
ALTER DATABASE billing SET OFFLINE;
3)接下来,在管理工作室,在对象资源管理器中单击数据库,选择“恢复数据库”
4)在“To Database”字段中输入新的名称。即billingclone
5)在“Source for Restore”中,点击“From Device”,点击…导航按钮
6)单击Add并导航到您的备份
7)在“恢复”旁打勾(选择要恢复的备份集)
8)接下来选择上方LH角的OPTIONS页面
9)现在在RESTORE AS中编辑数据库文件名。对db和日志都这样做。即billingclone。MDF和billingclone_log.ldf
10)现在点击OK,等待任务完成。
11)在对象资源管理器中点击刷新,你将看到你的新db
12)现在你可以把你的账单数据库重新上线了。使用脱机计费时使用的相同查询窗口。使用该命令:
-- 1) free up all USER databases
USE master; GO
-- 2) restore access to all users:
ALTER DATABASE billing SET MULTI_USER WITH ROLLBACK IMMEDIATE;GO
-- 3) put the db back online:
ALTER DATABASE billing SET ONLINE;
完成了!
您可以创建一个新的数据库,然后使用“恢复向导”启用覆盖选项或:
查看备份文件内容:
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).