ALTER DATABASE [...] SET SINGLE_USER与NO_WAIT等待20秒

时间:2014-03-24 18:00:29

标签: sql-server sql-server-2012

在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”。

1 个答案:

答案 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