我有一个非常简单的问题:
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 回答
Applies to: SQL Server (SQL Server 2008 through current version), Azure SQL Database .
要从另一个模式传输安全性,当前用户必须对目标模式的安全(非模式)和
ALTER
权限具有CONTROL
权限 .如果安全性上有
EXECUTE AS OWNER
规范且所有者设置为SCHEMA OWNER
,则用户还必须拥有目标模式所有者的IMPERSONATION
权限 .与传输的安全性相关联的所有权限在移动时都将被删除 .
ALTER SCHEMA
只能用于在同一数据库中的模式之间移动安全性 . 要更改或删除模式中的安全性,请使用特定于该安全性的ALTER
或DROP
语句 .如果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?