我们的数据库中有很多DBUsers.我们必须从数据库中清除所有这些用户.当我尝试从DB中删除用户时,由于以下错误而失败
消息15138,级别16,状态1,行2数据库主体拥有数据库中的模式,不能删除.
所以我找到了解决方案,即我将架构的所有权更改为dbo.现在我可以使用下面的脚本删除用户
SELECT name FROM sys.schemas WHERE principal_id = USER_ID('myUser')
ALTER AUTHORIZATION ON SCHEMA::SchemaName TO dbo
GO
DROP USER myUser
Run Code Online (Sandbox Code Playgroud)
但是我想放弃一些用户,所以我需要生成通用脚本.我正在使用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
Run Code Online (Sandbox Code Playgroud)