1

我正在尝试进行日志传送故障转移测试,旨在将数据库置于还原模式的步骤失败,并出现错误“无法获得独占访问权限,因为数据库正在使用中”。

该操作是通过 SSMS 选择“事务日志”并在媒体选项下选择“备份日志尾部”来执行的,这应该使数据库处于“恢复模式”。

失败后,我尝试先将数据库置于单用户模式并使其脱机,但两个命令均无效(或失败)。

我已经对测试数据库重复了该操作,并且没有问题。T-SQL 如下:

BACKUP LOG [TESTDB] TO  DISK = N'U:\MSSQL\Backup\TESTDB.bak' WITH  NO_TRUNCATE , NOFORMAT, NOINIT,  NAME = N'TESTDB-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  NORECOVERY ,  STATS = 10, CHECKSUM
GO
declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N'TESTDB' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'TESTDB' )
if @backupSetId is null begin raiserror(N'Verify failed. Backup information for database ''TESTDB'' not found.', 16, 1) end
RESTORE VERIFYONLY FROM  DISK = N'U:\MSSQL\Backup\TESTDB.bak' WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND
GO

我还检查了任何阻塞或正在运行的事务,但没有出现。

有什么想法吗?

4

1 回答 1

0

将目标数据库留在 RESTORING 中的日志备份称为“尾日志备份”。使数据库脱机需要终止与数据库的所有其他连接。像这样:

use testdb
go
alter database testdb set single_user with rollback immediate
go
use master
BACKUP LOG [TESTDB] TO  DISK = N'c:\temp\TESTDB.bak' WITH  NO_TRUNCATE , NOFORMAT, NOINIT,  NAME = N'TESTDB-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  NORECOVERY ,  STATS = 10, CHECKSUM
GO
于 2020-01-16T13:46:42.450 回答