Sql Server 2000 系统下登录名和数据库名称相同,而且是该用户是db_owner,导致无法删除该用户;
个人推测原因是某些存储过程或视图使用了 [数据库名].[对象] 的方式引用对象,导致被系统认为是 [登录名].[对象] 的引用;原帖:http://community.csdn.net/Expert/topic/5642/5642771.xml如果谁能解决直接删除 Sql Server 2000 系统下的同名用户,另外再送200分……

解决方案 »

  1.   

    如果存在对象的所有者是你要删除的用户,则无法删除这个数据库用户。必须手工或用sp_changeobjectowner将这些对象的所有者改为其他用户,才可以删除你指定的用户。
      

  2.   

    明白了~  我自己想错了,也找到原因了:的确是所有者的问题,所有有问题的数据库都是先建了登录名之后由程序生成的,在CREATE时没有带上[dbo]限制,就被系统认成登录名所有了(因为用的该登录名登录),所以不是同步同名的问题,而是这类系统本身的设计缺陷导致的,迁移到2005后,原来的某些引用路径被改变了(加上了架构),就导致系统错误……谢谢楼上诸位
      

  3.   

    新建的SQL群 19078538 欢迎大家加入,共同研究,一起进步!
      

  4.   

    所有者的问题, 在把所有绑定到所有者的对象修改后, 执行下面的语句修改数据库的所有者, 完成后再删除用户即可(2005也适用)USE 你的库名
    EXEC sp_cnangedbowner 'sa'
      

  5.   

    另外, 如果没有记错的话, sql 2005建立数据库后, 会默认为数据库所有者的用户建立一个构架, 所以对于sql2005, 在修改数据库的所有者后, 还要把与用户绑定的构架(与用户同名)删除后, 才能删除用户