使用模式重新创建用户

时间:2015-06-18 04:44:12

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

以下代码重新创建用户:

-- 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

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

2 个答案:

答案 0 :(得分:0)

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

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/

答案 1 :(得分:0)

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

如果不这样做,它将返回错误:

  

数据库主体在数据库中拥有一个模式,不能删除。