问题:
关于SQL 2008删除 登录名----要怎么查用户的架构才能删除
执行 DROP USER [userName] 后
报错:数据库主体在该数据库中拥有 架构,无法删除。
------解决方案--------------------
--查看登录账户:
exec sp_helplogins
----删除登录账户:
exec sp_droplogin @loginame=name
------解决方案--------------------(推荐)
1、数据库--》安全性--》构架,先删除对应的构架 或 更改对应架构的所有者为“dbo”
2、数据库--》安全性--》用户,删除对应的用户
------解决方案--------------------
删除之前执行下面这个查询,再执行查询结果的第一列生成的 SQL, 再删除就可以了
SELECT
N'ALTER AUTHORIZATION ON SCHEMA::'
+ QUOTENAME(SCH.name)
+ N' TO [dbo];',
*
FROM sys.schemas SCH WITH(NOLOCK)
INNER JOIN sys.database_principals DP WITH(NOLOCK)
ON DP.principal_id = SCH.principal_id
WHERE DP.type IN('S', 'G', 'U')
AND DP.name = N'jluser' -- 要删除的用户
参考其他方法1:(推荐)
SQL2005删除用户的时候,产生“数据库主体在该数据库中拥有架构,无法删除”的解决办法
--执行如下SQL语句
ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo;
--然后手动删除就可以了。
其中SCHEMA::db_owner 中的db_owner换成相应的数据构架就可以了。
参考其他方法2:
一个数据库,运行在SQL Server 2008下,数据库用户无法删除,在删除时提示“数据库主体在该数据库中拥有架构,无法删除”。 原因很简单,就是由于此用户在数据库中拥有某些架构的所有权,将相关架构的用户权限移除或删除架构即可。
此处以一个用户UserA为例,说明具体应进行的操作,注意以下方面: 1、数据库的表、视图、存储过程等等,如果架构为UserA,将其所有者全部改为dbo。 2、在“安全性”-“架构”下,如果名称对象中有UserA这一项,将其直接删除;如果其它对象的所有者是UserA,将其所有者改为dbo 3、在“安全性”-“角色”-“数据库角色”下,打开每一个角色的属性,从“角色列表”中将UserA删除。
做完这几步,基本没有其它问题了,能够顺利地删除无效的数据库用户。