• 数据库主体拥有数据库角色,无法删除


    附加数据库后用语句:

    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

    即可解决问题

  • 相关阅读:
    The Country List
    hdoj1215--七夕节(数学)
    Poj 1654--Area(叉积)
    Poj2229--Sumsets(递推)
    数据预处理 center&scale&box-cox
    caret 分类回归树 用法
    ensemble 的2篇入门 文章
    数组 array 矩阵 list 数据框 dataframe
    R list frame, matrix
    R 如何 隐藏坐标轴
  • 原文地址:https://www.cnblogs.com/wolfly/p/1353964.html
Copyright © 2020-2023  润新知