我们有一个在“凌晨”运行的 SQL 作业代理,用于从生产备份中恢复我们的本地数据库 (FooData)。
首先,将数据库设置为 SINGLE_USER 模式并杀死所有打开的进程。二是恢复数据库。
但是第 3 步偶尔会失败,出现错误 6107:“只能杀死用户进程”
这种情况大约每周发生一次或两次,间隔看似随机。这是偶尔发生故障的第 3 步的代码:
USE master;
go
exec msdb.dbo.KillSpids FooData;
go
ALTER DATABASE FooData SET MULTI_USER;
go
有没有人知道可能会发生什么导致此错误?我在想在第 3 步期间可能会启动一些自动化过程,或者可能有一些用户在此期间尝试登录?我不是 DBA,所以我在这一点上猜测,尽管我相信当 DB 处于 SINGLE_USER 模式时用户不应该能够登录。