将架构从“dbo”更改为自定义名称

changing schema from `dbo` to custom name

我有一个很简单的问题:

如何将数据库架构从 dbo 更改为另一个架构?

我已经试过了:

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

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

错误:

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

我们将不胜感激。

适用于:SQL 服务器(SQL Server 2008 到当前版本),Azure SQL 数据库.

要从另一个架构传输安全对象,当前用户必须对安全对象(非架构)具有 CONTROL 权限,对目标架构具有 ALTER 权限。

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

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

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

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

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

也许您应该编写要移动的 table 的脚本,然后在目标中重新创建它 dbo?