我正在尝试使用以下命令将表格架构从MySchema.TableName
更改为dbo.TableName
-
ALTER SCHEMA MySchema TRANSFER dbo.TableName
我收到以下错误 -
Msg 15151,Level 16,State 1,Line 1
无法找到对象'TableName',因为它不存在或您没有权限。
通过搜索我也添加了以下命令无济于事。
ALTER AUTHORIZATION ON SCHEMA::MySchema to dbo;
ALTER AUTHORIZATION ON OBJECT::MySchema.TableName TO SCHEMA OWNER;
ALTER SCHEMA MySchema TRANSFER dbo.TableName
我不断收到同样的错误。
我的表名是正确的,我正在运行的数据库也是如此。有什么帮助吗?
答案 0 :(得分:0)
你有向后的模式。
更改...
ALTER SCHEMA MySchema TRANSFER dbo.TableName
...为:
ALTER SCHEMA dbo TRANSFER MySchema.TableName
请参阅related SO answer以确认源{C}和目标架构应位于ALTER SCHEMA
语句中的位置。
如果ALTER SCHEMA
语句仍然不起作用,那么您还有其他问题(例如,您没有必要的权限)。
对于您可能遇到的任何权限问题,请参阅TechNet's ALTER SCHEMA
reference,特别是其权限部分,其中说明:
要从另一个架构传输安全性,当前用户必须对目标架构的安全(非架构)和ALTER权限具有CONTROL权限。
如果安全性上有EXECUTE AS OWNER规范且所有者设置为SCHEMA OWNER,则用户还必须拥有目标模式所有者的IMPERSONATION权限。
与传输的安全相关联的所有权限在移动时都会被删除。