MS-SQL单用户模式查询中断

时间:2019-05-02 06:36:59

标签: sql-server

我正在尝试运行以下查询

ALTER DATABASE my_db
    SET SINGLE_USER
    WITH ROLLBACK IMMEDIATE;

DBCC SHRINKDATABASE (my_db, 2);

ALTER DATABASE my_db
    SET MULTI_USER;

查询开始执行,数据库进入单用户模式,我看到我的cpu和磁盘使用率激增了几秒钟(介于5到20秒之间),然后出现错误。

Database 'my_db' is already open and can only have one user at a time.

在尝试在多用户模式下运行缩小时,我遇到了其他一些问题。在收缩运行时如何获得对数据库的独占访问权?

2 个答案:

答案 0 :(得分:0)

执行此操作以避免他人使用唯一的连接:

USE master;
GO
ALTER DATABASE my_db
    SET SINGLE_USER
    WITH ROLLBACK IMMEDIATE;
GO

USE my_db;     -- Grab that single connection immediately after db is in single_user mode
GO
DBCC SHRINKDATABASE (my_db, 2);
GO

ALTER DATABASE my_db
    SET MULTI_USER;
GO

答案 1 :(得分:0)

您可以在这里做的是。 运行:

exec sp_who

这将返回给您该进程及其连接到您数据库的SP ID。

然后运行kill命令

KILL SPID