前因后果是这样的:
我backup了2005的一个数据库,到另一台机器的sqlserver2005上restore了。发现里面的一个用户无法连接这个数据库。
所以我打算把数据库里的这个用户删掉,再重新建一个login。
结果发吸这个用户删不掉,报错信息:
TITLE: Microsoft SQL Server Management Studio
------------------------------Drop failed for User 'abs'.  (Microsoft.SqlServer.Smo)For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.1399.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Drop+User&LinkId=20476------------------------------
ADDITIONAL INFORMATION:An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)------------------------------The database principal owns a database role and cannot be dropped. (Microsoft SQL Server, Error: 15421)For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.1399&EvtSrc=MSSQLServer&EvtID=15421&LinkId=20476------------------------------
BUTTONS:OK
------------------------------
这个用户的Owned Schema列表里一个shcema也没有勾,同样Database role membership也都清了,没有勾。
default shcema那里写的是dbo(这个我清不掉)为什么点delete删不掉呢?

解决方案 »

  1.   

    use test
    go
    drop user 数据库用户
    drop Login 登陆名
    ---数据库用户/登陆名 一般情况下是相同的
      

  2.   

    下面的示例从当前数据库删除用户 test。EXEC sp_dropuser 'test'下面的示例从 SQL Server 中删除登录 test。EXEC sp_droplogin 'test'
      

  3.   

    楼上的两位的drop user statement 的结果都是一样的:
    Msg 15421, Level 16, State 1, Line 1
    The database principal owns a database role and cannot be dropped.
      

  4.   

    至于企业管理器我就是在management studio 里删不掉才提问的啊。
      

  5.   

    如果这个数据库中有与他相关的表视图或sp之类的属于他的东西,那么你不管用什么办法都无法删除所以LZ要检查一下有没有属于这个用户的东西在--比如用户名test,那么用如下语句看看有没有与之相关的东西
    select * from sys.objects where schema_id = (select schema_id from sys.schemas where name = 'test')
    --如果有就需要先删掉以后才能删除用户
      

  6.   

    这个数据库没有view 和sp,以上语句把test换成我的用户名,返回0条记录。
      

  7.   

    在企业管理器里操作: 
    在查看实例中的数据库—用户(删除) 
    ------
    如果用户是db_owner在多个数据库时,要在各个数据里的用户名删除
      

  8.   

    在SQL2000里,当删除即存的用户出现问题时,首先像8楼说的,查找数据库中是否存在以该用户创建的数据库的对象,
    其次,可以试试Exec sp_change_users_login 'Auto_Fix',UserName,null 
    2005中也应该有类似的方法吧
      

  9.   

    to Roy88:
    首先这个sql server developer版是新装的。除了系统库外只有我这一个用户数据库。另外我认为既然login已经删掉了,我现在对付的是具体的一个数据库里的user,应该不需要考虑其它数据库吧。to zpzpyesterday :
    Exec   sp_change_users_login   'Auto_Fix',UserName,null   
    这个怎么用?因为根本没有对应的login 。