zoukankan      html  css  js  c++  java
  • 数据库主体拥有数据库角色,无法删除

    附加数据库后用语句:

    USE[NorthWind]

    DROP USER BETTERDEV;

    删除用户 BetterDev 时报数据库主体拥有数据库角色,无法删除。错误,无法删除用户。

    解决方法:

    通过语句

    SELECT [name],[principal_id],[type],[owning_principal_id] FROM sys.database_principals;

    查看数据库的所有用户:


    (图中条一个选中项应为BETTERDEV 而非 BETTER)
    从图上可以看出角色
    “aspnet_WebEvent_FullAccess”的所有者是 7 “betterdev”,所以无法删除“BETTERDEV”。故用如下语句:

           ALTER AUTHORIZATION ON ROLE::aspnet_WebEvent_FullAccess TO dbo;

    更改角色的所有者,如果有多个角色的所有者都为“BETTERDEV”则用如下语句:

           DECLARE @name varchar(110);

    DECLARE @sql varchar(500);

    DECLARE MyCursor CURSOR FOR

        SELECT [name] FROM sys.database_principals where owning_principal_id=7;

     

    OPEN MyCursor;

     

    FETCH NEXT FROM MyCursor INTO @name;

    WHILE @@FETCH_STATUS = 0

    BEGIN

        set @sql='ALTER AUTHORIZATION ON ROLE::'+@name+' TO dbo;'

        exec(@sql);

        FETCH NEXT FROM MyCursor INTO @name;

    END;

     

    CLOSE MyCursor;

    DEALLOCATE MyCursor;

    进行循环删除。

    最后用:

    USE[ComptPrice]

    DROP USER USER1;

    即可顺利删除用户.

    同理
    删除用户 BetterDev 时报数据库主体拥有数据库框架,无法删除。错误,无法删除用户。
    则先用

    select * from sys.schemas

    查找要删除有用户拥有哪个框架
    再用

    ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo

    即可解决问题

  • 相关阅读:
    Linux下动态库(.so)和静态库(.a) 的区别
    CTS、CLS、CLR
    ASP.NET简介及网页基础知识
    ASP.NET MVC中ActionResult的不同返回方式
    ADO.NET中的数据库帮助类
    ASP.NET MVC 方法View返回的两种方式
    使用win10 IIS 发布局域网网站
    ASP.NET MVC 给Action的参数赋值的方式
    ASP.NET MVC简单流程解释(传值方式)
    ASP.NET MVC 简介(附VS2019和VSCode版示例)
  • 原文地址:https://www.cnblogs.com/wolfly/p/1353964.html
Copyright © 2011-2022 走看看