0

我有一个非常简单的问题:

如何将 DB Schema 更改dbo为另一个模式?

我已经尝试过:

alter schema [new_schema] transfer [old_schema].[object_name];

但是我在使用查询时收到关于权限的错误,并且在使用 GUI 时无法修改错误属性。我自己创建了数据库,并获得了所有权限。我能想到的唯一问题来自 GoDaddy,因为我正在使用 GoDaddy 的计划来托管我的数据库。我可以成功地将表从任何其他架构转移到,dbo但我无法将任何表从dbo任何其他架构转移...

错误:

'Cannot transfer the object 'Production', because it does not exist or you do not have permission.'

任何帮助将不胜感激。

4

1 回答 1

1

适用于:SQL Server(SQL Server 2008 到当前版本)、Azure SQL 数据库

要从另一个模式传输安全对象,当前用户必须具有CONTROL安全对象(不是模式)ALTER的权限和目标模式的权限。

如果安全对象上有EXECUTE AS OWNER规范并且所有者设置为SCHEMA OWNER,则用户还必须IMPERSONATION对目标模式的所有者具有权限。

与正在传输的安全对象关联的所有权限在移动时都会被删除。

ALTER SCHEMA只能用于在同一数据库中的模式之间移动安全对象。要更改或删除模式中的安全对象,请使用特定于该安全对象的ALTERorDROP语句。

如果 securable_name 使用单部分名称,则当前有效的名称解析规则将用于定位安全对象。

当安全对象移动到新架构时,与安全对象关联的所有权限都将被删除。如果已明确设置安全对象的所有者,则所有者将保持不变。如果安全对象的所有者已设置为SCHEMA OWNER,则所有者将保持不变SCHEMA OWNER;但是,移动SCHEMA OWNER后将解析为新架构的所有者。新所有者的 principal_id 将为 NULL。

也许您应该只编写要移动的表并在目标中重新创建它dbo

于 2015-05-02T13:46:33.840 回答