我有多个数据库要将模式从Single-User更改为Multi-User。我可以用这个来改变一个数据库。
USE master;
GO
ALTER DATABASE CDN_Ceramika
SET MULTI_USER;
GO当一个模式是单用户时,是否可以改变模式的几个基本或任何查询,什么时候模式将改变多用户?
发布于 2019-01-11 08:12:15
您可以使用无文档化的系统过程sp_msforeachdb。
USE master;
EXEC sys.sp_MSforeachdb 'IF ''?'' NOT IN (''master'',''msdb'',''tempdb'',''model'') BEGIN
ALTER DATABASE ? SET MULTI_USER;
END;';发布于 2019-01-11 08:50:54
如果您是数据库管理新手,我建议您不要使用sys.sp_MSforeachdb。尽管没有文档,但在DBA中,它是一个非常流行的函数,它知道并四次检查它们在做什么。这篇文章解释了它的一些缺陷。
通常情况下,生成要用SQL执行的命令字符串、检查它们、修复任何问题并执行结果脚本通常更安全。如果适当的话,可能在事务内部。
如本文所示,sp_MSforeachdb本身查询sys.databases表。你也可以这样做(如用:
select 'ALTER DATABASE [' + name + '] SET MULTI_USER;'
from sys.databases
where name not in ('master','tempdb','model','msdb')为所需的所有数据库生成ALTER DATABASE,其名称与WHERE子句匹配。你也可以写:
select 'ALTER DATABASE [' + name + '] SET MULTI_USER;'
from sys.databases
where name not in ('master','tempdb','model','msdb')
and [user_access_desc] != 'MULTI_USER'排除已经处于多用户模式的数据库。
发布于 2019-01-11 08:34:51
右键单击要更改的数据库,然后单击“属性”。
单击选项并向下滚动到底部,然后将其设置为如下所示:

单击OK,它将被设置。
https://stackoverflow.com/questions/54142509
复制相似问题