首页 > 解决方案 > SQL 服务器设置 AUTOGROW_ALL_FILES 失败

问题描述

我尝试执行此操作:

USE [MyDB]
GO
declare @autogrow bit
SELECT @autogrow=convert(bit, is_autogrow_all_files) FROM sys.filegroups WHERE name=N'PRIMARY'
if(@autogrow=0)
    ALTER DATABASE [MyDB] MODIFY FILEGROUP [PRIMARY] AUTOGROW_ALL_FILES
GO

它失败了:

当其他用户正在使用数据库“HistoryDBTest”时,无法更改数据库状态

我怎么能绕过它?

标签: sql-server

解决方案


您需要将数据库更改为单用户模式。小心使用它;考虑到错误是“其他用户正在使用数据库”,这意味着这些用户将切断与数据库的连接,并且他们的事务回滚。

USE master;
GO
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
USE [MyDB];
GO
DECLARE @autogrow bit;
SELECT @autogrow = CONVERT(bit, is_autogrow_all_files)
FROM sys.filegroups
WHERE name = N'PRIMARY';
IF (@autogrow = 0) ALTER DATABASE [MyDB] MODIFY FILEGROUP [PRIMARY] AUTOGROW_ALL_FILES;
GO
USE master;
GO
ALTER DATABASE MyDB SET MULTI_USER;

推荐阅读