我正在尝试日志传送故障转移测试,并且旨在使数据库进入还原模式的步骤失败,并出现错误“由于正在使用数据库而无法获得独占访问”。
[此操作是通过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
我还检查了是否有任何阻塞或正在运行的事务,但未显示任何内容。
有任何想法吗?
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