将数据库设置为单用户模式
适用于: SQL Server
本文将说明如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中将用户定义的数据库设置为单用户模式。 单用户模式指定一次只有一个用户可访问数据库,该模式通常用于维护操作。
限制
如果其他用户在您将数据库设置为单用户模式时连接到了数据库,则他们与数据库的连接将被关闭,且不发出警告。
即使设置此选项的用户已断开连接,数据库仍保持单用户模式。 这时,其他用户(但只能是一个)可以连接到数据库。
先决条件
- 在将数据库设置为 SINGLE_USER 之前,应验证 AUTO_UPDATE_STATISTICS_ASYNC 选项是否设置为
OFF
。 在此选项设置为ON
时,用于更新统计信息的后台线程将与数据库建立连接,你将无法以单用户模式访问数据库。 有关详细信息,请参阅 ALTER DATABASE SET 选项 (Transact-SQL)。
权限
需要对数据库拥有 ALTER 权限。
使用 SQL Server Management Studio
若要将数据库设置为单用户模式:
在 “对象资源管理器” 中,连接到 SQL Server 数据库引擎的实例,然后展开该实例。
右键单击要更改的数据库,再选择“属性”。
在“数据库属性”对话框中,选择“选项”页。
在 “限制访问” 选项中,选择 “单用户”。
如果其他用户连接到数据库,将出现 “打开的连接” 消息。 若要更改属性并关闭所有其他连接,请选择“是”。
还可使用此过程将数据库设置为“多用户”访问或“受限”访问。 有关此“限制访问”选项的详细信息,请参阅数据库属性(选项页)。
使用 Transact-SQL
若要将数据库设置为单用户模式:
连接到 数据库引擎。
在标准栏上,选择“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后选择“执行”。 此示例将数据库设置为
SINGLE_USER
模式,以获得独占访问权。 然后,该示例将AdventureWorks2022
数据库的状态设置为READ_ONLY
,并将对数据库的访问权返回给所有用户。
警告
为了快速获取独占访问权限,代码示例使用终止选项 WITH ROLLBACK IMMEDIATE
。 这将导致所有未完成事务都将被回滚,并将立刻断开 AdventureWorks2022
示例数据库的所有其他连接。
USE master;
GO
ALTER DATABASE AdventureWorks2022
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE AdventureWorks2022
SET READ_ONLY;
GO
ALTER DATABASE AdventureWorks2022
SET MULTI_USER;
GO