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

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:找不到对象的默认值”

Codeigniter:调用控制器时出现 404

在现有文件上设置属性时出现错误“找不到路径的一部分”

在现有工作区中安装 KIF 时出现错误“找不到 -lPods-MyProjectTests-KIF 的库”

Vertx:java.sql.SQLSyntaxErrorException:用户缺少权限或找不到对象:ACHAT

已保存查询的用户缺少权限或找不到对象错误