首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将SQL模式从单一用户更改为多用户,只需少量或全部基础。

将SQL模式从单一用户更改为多用户,只需少量或全部基础。
EN

Stack Overflow用户
提问于 2019-01-11 08:02:45
回答 3查看 7.9K关注 0票数 1

我有多个数据库要将模式从Single-User更改为Multi-User。我可以用这个来改变一个数据库。

代码语言:javascript
复制
USE master;
GO
ALTER DATABASE CDN_Ceramika
SET MULTI_USER;
GO

当一个模式是单用户时,是否可以改变模式的几个基本或任何查询,什么时候模式将改变多用户?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-01-11 08:12:15

您可以使用无文档化的系统过程sp_msforeachdb

代码语言:javascript
复制
USE master;

EXEC sys.sp_MSforeachdb 'IF ''?'' NOT IN (''master'',''msdb'',''tempdb'',''model'') BEGIN
    ALTER DATABASE ? SET MULTI_USER;
END;';
票数 0
EN

Stack Overflow用户

发布于 2019-01-11 08:50:54

如果您是数据库管理新手,我建议您不要使用sys.sp_MSforeachdb。尽管没有文档,但在DBA中,它是一个非常流行的函数,它知道并四次检查它们在做什么。这篇文章解释了它的一些缺陷。

通常情况下,生成要用SQL执行的命令字符串、检查它们、修复任何问题并执行结果脚本通常更安全。如果适当的话,可能在事务内部。

如本文所示,sp_MSforeachdb本身查询sys.databases表。你也可以这样做(如用:

代码语言:javascript
复制
select 'ALTER DATABASE [' + name + '] SET MULTI_USER;'
from sys.databases
where name not in ('master','tempdb','model','msdb')

为所需的所有数据库生成ALTER DATABASE,其名称与WHERE子句匹配。你也可以写:

代码语言:javascript
复制
select 'ALTER DATABASE [' + name + '] SET MULTI_USER;'
from sys.databases
where name not in ('master','tempdb','model','msdb')
and [user_access_desc] != 'MULTI_USER'

排除已经处于多用户模式的数据库。

票数 4
EN

Stack Overflow用户

发布于 2019-01-11 08:34:51

右键单击要更改的数据库,然后单击“属性”。

单击选项并向下滚动到底部,然后将其设置为如下所示:

单击OK,它将被设置。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54142509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档