删除某个登录名时报错消息 15174,级别 16,状态 1,第 2 行
登录名 'RCET' 拥有一个或多个数据库。在删除该登录名之前,请更改相应数据库的所有者。

SQL SERVER的登录名好像是只有映射默认数据库的概念,怎么删除的时候,抛出一个拥有数据库的说法? 还请给位指点!试图修改RCET登录名的映射的用户名(原来是dbo),也无法修改
既然dbo用户本身是系统用户,删除的时候,为何还要做删除了,SQL SERVER有这么傻吗?

解决方案 »

  1.   


    -- step1. 找出所有dbowner为RCET的数据,并产生修改dbowner的SQL脚本.
    select 'use ['+a.name+']; exec dbo.sp_changedbowner @loginame = N''sa'', @map = false; '
     from sys.databases a
     inner join sys.syslogins b on a.owner_sid=b.sid
     where b.name='RCET'-- step2. 执行step1产生的SQL语句.-- step3. 切换到master数据库,删除登录名.
    use masterdrop login RCET
      

  2.   


    版主,麻烦帮我看看,其实刚才这个问题的源头是,我想设置登录名只能看到所拥有的数据,通过执行下面的语句
    DENY VIEW any DATABASE to PUBLIC;然后继续执行
    ALTER AUTHORIZATION ON DATABASE::RCET TO RCET;
    抛出下面的错误
    消息 15110,级别 16,状态 1,第 1 行
    推荐的新数据库所有者已经是此数据库的用户或在此数据库中已有一个别名。
    现在通过RCET用户登录,什么数据库也看不到,如下图
    请问如何解决
      

  3.   

    用sa连接, 查看RCET数据库下是否有个用户名为RCET? 如有先删除.
    然后再执行 ALTER AUTHORIZATION ON DATABASE::RCET TO RCET;
      

  4.   


    有的,是我针对RCET数据库特意建的用户(跟登录名一致),请问版主,使用 ALTER AUTHORIZATION ON DATABASE::RCET TO RCET和针对RCET数据库创建的用户,从权限上来讲有什么区别? 我想RCET用户是RCET数据库的管理员。
      

  5.   

    ALTER AUTHORIZATION ON DATABASE::RCET TO RCET
    --> 这样RCET用户就是RCET数据库的管理员了.