首页 文章

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

提问于
浏览
0

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

How to change DB Schema from dbo to another schema?

我已经尝试过了:

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

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

Error:

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

任何帮助将不胜感激 .

1 回答

  • 1

    Applies to: SQL Server (SQL Server 2008 through current version), Azure SQL Database .

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

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

    与传输的安全性相关联的所有权限在移动时都将被删除 .

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

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

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

    Maybe you should just script out the table you want to move and recreate it in the target dbo?

相关问题