在SQL Server 2012上,当我发出声明时
ALTER DATABASE [...] SET SINGLE_USER WITH NO_WAIT
并且其他人正在使用数据库,我必须等待大约20秒,直到请求失败,尽管有NO_WAIT终止条款。
是否有可能告诉SQL Server让“ALTER DATABASE”请求立即失败?还适用于旧版本的SQL Server? (虽然似乎SQL Server 2005及更早版本中不支持“ALTER DATABASE [...] SET”。
答案 0 :(得分:1)
试一试。在尝试将其置于SINGLE_USER
模式之前,它会检查与数据库的活动连接。
use master
GO
DECLARE @DBName SYSNAME = N'YourDbName'
IF NOT EXISTS (
SELECT sd.Name, sp.*
FROM sys.sysprocesses sp
JOIN sys.sysdatabases sd
ON sd.dbid = sp.dbid
WHERE sd.Name = @DBName
AND sp.spid <> @@SPID
)
BEGIN
ALTER DATABASE [...]
SET SINGLE_USER WITH NO_WAIT
END