【问题标题】:recreate user with schema使用架构重新创建用户
【发布时间】:2015-06-18 04:44:11
【问题描述】:

以下代码重新创建用户:

-- Remove link to order schema
ALTER AUTHORIZATION ON SCHEMA::order TO dbo

-- Recreate order user without login
DROP USER order
CREATE USER order WITH DEFAULT_SCHEMA = order

-- Restore link to order schema
ALTER AUTHORIZATION ON SCHEMA::order TO order

我的问题是,为什么我们需要在删除用户之前删除指向架构的链接,并在用户创建后恢复它?

【问题讨论】:

    标签: sql-server sql-server-2008 database-schema


    【解决方案1】:

    在 SQL Server 2005 中,Schema 的行为发生了变化。Schema 不再等同于数据库用户;每个模式现在都是一个不同的命名空间,独立于创建它的数据库用户而存在。换句话说,模式只是对象的容器。架构可以由任何用户拥有,并且其所有权是可以转让的。

    https://msdn.microsoft.com/en-us/library/ms190387.aspx

    http://basitaalishan.com/2014/05/29/the-database-principal-owns-a-schema-in-the-database-and-cannot-be-dropped/

    【讨论】:

      【解决方案2】:

      好的,刚刚找到了为什么我们需要在删除用户之前将架构链接临时移动到另一个所有者。

      如果不这样做会返回错误:

      数据库主体在数据库中拥有一个架构,并且不能被删除。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-08
        • 2021-04-20
        • 1970-01-01
        相关资源
        最近更新 更多