修改现有表的架构时出现“找不到对象”错误
Posted
技术标签:
【中文标题】修改现有表的架构时出现“找不到对象”错误【英文标题】:"Cannot find the object" error when modifying schema for existing table 【发布时间】:2014-06-28 14:44:41 【问题描述】:我正在尝试使用以下命令将我的表架构从 MySchema.TableName
更改为 dbo.TableName
-
ALTER SCHEMA MySchema TRANSFER dbo.TableName
我收到以下错误 -
消息 15151,第 16 级,状态 1,第 1 行 找不到对象“TableName”,因为它不存在或您没有权限。
通过搜索,我还添加了以下命令,但无济于事。
ALTER AUTHORIZATION ON SCHEMA::MySchema to dbo;
ALTER AUTHORIZATION ON OBJECT::MySchema.TableName TO SCHEMA OWNER;
ALTER SCHEMA MySchema TRANSFER dbo.TableName
我不断收到同样的错误。
我的表名是正确的,我正在运行的数据库也是如此。有什么帮助吗?
【问题讨论】:
How do I change db schema to dbo的可能重复 @alroc:我不同意这是重复的。链接的问题只是询问如何将表移动到另一个模式。这个问题是关于尝试将表错误地移动到另一个架构时出现的特定错误。 按照该答案中的说明,您将正确移动表格。这是同一个根本问题:“在模式之间移动表的正确方法是什么?” 【参考方案1】:你的模式倒过来了。
改变...
ALTER SCHEMA MySchema TRANSFER dbo.TableName
...到:
ALTER SCHEMA dbo TRANSFER MySchema.TableName
请参阅 related SO answer 以确认源架构和目标架构应在您的 ALTER SCHEMA
语句中的位置。
如果ALTER SCHEMA
语句仍然不起作用,那么您有另一个问题(例如,您没有必要的权限)。
对于您可能遇到的任何权限问题,请参阅TechNet's ALTER SCHEMA
reference,特别是其权限部分,其中说:
要从另一个架构转移安全对象,当前用户必须对安全对象(而非架构)拥有 CONTROL 权限,并在目标架构上拥有 ALTER 权限。
如果安全对象上有 EXECUTE AS OWNER 规范并且所有者设置为 SCHEMA OWNER,则用户还必须对目标架构的所有者拥有 IMPERSONATION 权限。
与正在传输的安全对象关联的所有权限在移动时都会被删除。
【讨论】:
是的,我刚刚意识到这一点。 :)以上是关于修改现有表的架构时出现“找不到对象”错误的主要内容,如果未能解决你的问题,请参考以下文章
在远程 Worklight 服务器上运行时出现“Ecma 错误:TypeError:找不到对象的默认值”
在现有工作区中安装 KIF 时出现错误“找不到 -lPods-MyProjectTests-KIF 的库”