"找不到对象"修改现有表的架构时出错

时间:2014-05-11 03:47:25

标签: sql-server-2008 tsql

我正在尝试使用以下命令将表格架构从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

我不断收到同样的错误。

我的表名是正确的,我正在运行的数据库也是如此。有什么帮助吗?

1 个答案:

答案 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权限。

     

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