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

Dan*_*ams 23 sql-server-2008 sql-server

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

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

Aar*_*and 45

我总是使用以下内容:

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;
Run Code Online (Sandbox Code Playgroud)

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

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

ALTER DATABASE [dbname] SET ONLINE;
ALTER DATABASE [dbname] SET MULTI_USER;
Run Code Online (Sandbox Code Playgroud)

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

ALTER DATABASE [dbname] SET ONLINE;
GO
USE [dbname];
Run Code Online (Sandbox Code Playgroud)

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

ALTER DATABASE [dbname] SET MULTI_USER;
Run Code Online (Sandbox Code Playgroud)


Wil*_*Wil 25

有两种方法可以做到:

  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
    
    Run Code Online (Sandbox Code Playgroud)