我有多个数据库,可以将模式从Single-User
更改为Multi-User
。
我可以用它来更改一个数据库。
USE master;
GO
ALTER DATABASE CDN_Ceramika
SET MULTI_USER;
GO
仅当模式为单用户时,对于多用户模式更改时,是否可以更改几个碱基或任何查询的模式?
答案 0 :(得分:2)
如果您不熟悉数据库管理,建议使用sys.sp_MSforeachdb
来反对 。尽管没有记录,但它是DBA中非常流行的功能,它知道并四重检查他们的工作。 This article解释了它的一些陷阱。
通常,使用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'
排除已经处于多用户模式的数据库
答案 1 :(得分:1)
您可以使用未公开文件的系统过程sp_msforeachdb
:
USE master;
EXEC sys.sp_MSforeachdb 'IF ''?'' NOT IN (''master'',''msdb'',''tempdb'',''model'') BEGIN
ALTER DATABASE ? SET MULTI_USER;
END;';
答案 2 :(得分:-1)