sql - 用于查找数据库用户是否拥有架构的通用查询

标签 sql sql-server

我们的数据库中有很多 DBUser。我们必须从数据库中清除所有这些用户。当我尝试从数据库中删除用户时,由于以下错误而失败

Msg 15138, Level 16, State 1, Line 2 The database principal owns a schema in the database, and cannot be dropped.

所以我找到了解决方案,即将架构的所有权更改为dbo。现在我可以使用下面的脚本删除用户

SELECT name FROM  sys.schemas WHERE principal_id = USER_ID('myUser')
ALTER AUTHORIZATION ON SCHEMA::SchemaName TO dbo 
GO
DROP USER myUser

但是我想删除一些用户,所以我需要生成通用脚本。 我正在使用 SQL Server 2008

最佳答案

这将为您提供针对拥有这些模式的用户的完整模式列表:

SELECT db.name AS [DB User], s.name AS [Schema]
FROM sys.database_principals db
JOIN sys.schemas s ON s.principal_id = db.principal_id

关于sql - 用于查找数据库用户是否拥有架构的通用查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4921297/

相关文章:

sql - 如何在Sql中进行聚合

sql - 如何使用存储过程在sql server 2008中拆分字符串并将数据插入表

sql - 将备份恢复到不同的服务器 - 用户权限

sql-server - 在本地计算机上安装 SQL Server Express 2008 R2 时未列出任何服务

sql - SQL Server Compact 与 SQL Server 和 SQL Server Standard 之间有什么区别?

sql - SQL Server varchar(max) 中的字符数?

sql - 从表中检索失败的作业并包含重试详细信息(id 和重试计数)

mysql - 如何在MySQL中获取每月的数据

sql - 确定路径的子计数

php - 在 mysql 中使用 WHERE 子句时,count() 需要很多时间