一尘不染

如何将用户踢出 SQL Server 2008 数据库?

sql-server

我们需要进行恢复,但不能因为其他用户已连接。我们认为我们已经断开了每个流程,但显然没有。

我们如何从 Management Studio 启动其他所有人,以便我们进行备份?


阅读 172

收藏
2022-11-14

共2个答案

一尘不染

有两种方法:

  1. 在对象资源管理器中右键单击数据库,转到任务 > 分离。选择断开连接复选框。

  2. 将数据库设置为单用户模式,如下所述

   -- hit Ctrl+Shift+M in SSMS to fill in the template parameter
   USE master;
   GO

   ALTER DATABASE N'<Database Name, sysname,>'
   SET SINGLE_USER
   WITH ROLLBACK IMMEDIATE;
   GO

   ALTER DATABASE N'<Database Name, sysname,>'
   SET READ_ONLY;
   GO

   ALTER DATABASE N'<Database Name, sysname,>'
   SET MULTI_USER;
   GO
2022-11-14
一尘不染

我总是使用以下内容:

USE master; -- get out of dbname myself
GO
-- kick all other users out:
ALTER DATABASE [dbname] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- prevent sessions from re-establishing connection:
ALTER DATABASE [dbname] SET OFFLINE;

有时这可能需要一段时间,有时它会被阻止,因为您是运行它的人,并且与数据库有活动连接。检查可能具有相同数据库上下文的其他查询窗口 - 这可以包括打开的对话框、对象资源管理器、智能感知、长时间运行的作业等。

当我完成对该数据库配置的更改后,我只需:

ALTER DATABASE [dbname] SET ONLINE;
ALTER DATABASE [dbname] SET MULTI_USER;

虽然有时我需要对该数据库执行的操作要求数据库处于联机状态,但有时我必须将其置于单用户模式并执行以下操作:

ALTER DATABASE [dbname] SET ONLINE;
GO
USE [dbname];

现在我可以进行更改,然后当我准备好让其他用户连接时,只需:

ALTER DATABASE [dbname] SET MULTI_USER;
2022-11-14