我们需要进行恢复,但不能因为其他用户已连接。我们认为我们已经断开了每个流程,但显然没有。
我们如何从 Management Studio 启动其他所有人,以便我们进行备份?
有两种方法:
在对象资源管理器中右键单击数据库,转到任务 > 分离。选择断开连接复选框。
将数据库设置为单用户模式,如下所述:
-- 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
我总是使用以下内容:
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;