我们的数据库中有很多 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/