我的数据库以BAK文件的格式备份到硬盘。我正在尝试恢复该备份,但我无法这样做。
以下是我的疑问:
ALTER DATABASE DBASE
SET SINGLE_USER WITH
ROLLBACK IMMEDIATE
RESTORE DATABASE DBASE
FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBASE\MSSQL\Restore\DBASE.BAK'
WITH
MOVE 'DBASE' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBASE\MSSQL\DATA\DBASE.MDF',
MOVE 'DBASE' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBASE\MSSQL\DATA\DBASE_1.LDF',
MOVE 'DBASE' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBASE\MSSQL\DATA\DBASE_2.LDF'
ALTER DATABASE DBASE SET MULTI_USER
GO当我运行查询时,会得到以下错误:
以用户身份执行: NT权限\SYSTEM。RESTORE无法处理数据库'DBASE‘,因为这个会话正在使用它。建议在执行此操作时使用主数据库。SQLSTATE 42000还原数据库正在异常终止。SQLSTATE 42000。这个步骤失败了。
我不想恢复主数据库。有人能告诉我如何使用SQL查询用BAK文件恢复数据库吗?
发布于 2015-01-21 21:55:40
这不是要你恢复主人。它要求您在尝试恢复DBASE时不要在DBASE中。
尝试:
USE MASTER
GO
ALTER DATABASE DBASE
SET SINGLE_USER WITH
ROLLBACK IMMEDIATE
GO
RESTORE DATABASE DBASE
FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBASE\MSSQL\Restore\DBASE.BAK'
WITH
MOVE 'DBASE' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBASE\MSSQL\DATA\DBASE.MDF',
MOVE 'DBASE_LOG' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBASE\MSSQL\DATA\DBASE_1.LDF', REPLACE
GO
ALTER DATABASE DBASE SET MULTI_USER
GO发布于 2016-02-22 06:56:46
可以通过执行以下命令来还原数据库备份:
RESTORE DATABASE AdventureWorks FROM DISK = 'C:\AdventureWorks.BAK'
WITH REPLACE
GO这将把现有的数据库替换为新的数据库。
发布于 2016-02-22 07:55:19
首先使用以下语句验证备份文件:
restore headeronly from disk = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBASE\MSSQL\Restore\DBASE.BAK'...returns结果集,包含特定备份设备上所有备份集的所有备份头信息。
restore verifyonly from disk = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBASE\MSSQL\Restore\DBASE.BAK'...Verifies备份,但不恢复备份,并检查备份集是否已完成,并且整个备份是可读的。但是,RESTORE不尝试验证备份卷中包含的数据的结构。在Microsoft SQL Server中,RESTORE VERIFYONLY已被增强,用于对数据进行额外检查,以增加检测错误的可能性。目标是尽可能接近实际的恢复操作。
如果备份文件正常,那么您可以继续关闭数据库并确保没有其他人访问该数据库:
USE MASTER
GO
ALTER DATABASE DBASE SET OFFLINE WITH ROLLBACK IMMEDIATE;
go
ALTER DATABASE DBASE SET ONLINE
go
ALTER DATABASE DBASE SET RESTRICTED_USER
GO(确保您的没有在查询窗口的下拉菜单中选择数据库DBASE。)
之后,可以开始使用以下方法还原数据库。
USE MASTER
GO
RESTORE DATABASE DBASE
FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBASE\MSSQL\Restore\DBASE.BAK'
WITH
MOVE 'DBASE' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBASE\MSSQL\DATA\DBASE.MDF',
MOVE 'DBASE_LOG' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBASE\MSSQL\DATA\DBASE_1.LDF',
REPLACE,
RECOVERY,
STATS = 10
GO如果没有将备份还原到新位置,则可以省略移动命令,因为只有在还原到新位置时才需要这些命令。
这将使您的数据库恢复联机。
顺便说一句,拥有多个事务日志文件不会有多大好处,除非在事故期间磁盘上的空间耗尽。事务日志文件是连续写入的,从不并行写入。临时拥有多个事务日志文件的唯一原因是:
响应完整事务日志的备选方案包括
...as可以在这里找到:完整事务日志的故障排除(服务器错误9002)
祝你恢复正常。
https://serverfault.com/questions/661390
复制相似问题