SQL Server 2008 删除带有架构的用户名

问题:

关于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删除。

 

    做完这几步,基本没有其它问题了,能够顺利地删除无效的数据库用户。

 

你可能感兴趣的:(SQL,Server)