我该如何解决“参数@objname不明确或声明的@objtype(COLUMN)错误。”?
如果我尝试执行以下查询:我该如何解决“参数@objname不明确或声明的@objtype(COLUMN)错误。”?
EXEC sp_rename 'ENG_TEst.[ENG_Test_A/C_TYPE]', 'ENG_Test_AC_TYPE', 'COLUMN'
我得到一个错误:
Either the [email protected] is ambiguous or the claimed @objtype (COLUMN) is wrong.
我该如何解决呢?
坚果。几周前,我也遇到了同样的错误,在浪费了大量时间之后,我想到了如何让它发挥作用 - 但我忘记了它。 (没有太大的帮助,除了说是的,它可以完成。)
您是否尝试过不同的括号组合,或使用和不使用括号?例如
EXEC sp_rename 'ENG_TEst.ENG_Test_A/C_TYPE', 'ENG_Test_AC_TYPE', 'COLUMN';
EXEC sp_rename '[ENG_TEst].[ENG_Test_A/C_TYPE]', 'ENG_Test_AC_TYPE', 'COLUMN';
EXEC sp_rename '[ENG_TEst].[ENG_Test_A/C_TYPE]', '[ENG_Test_AC_TYPE]', 'COLUMN';
EXEC sp_rename '[ENG_TEst].ENG_Test_A/C_TYPE', 'ENG_Test_AC_TYPE', 'COLUMN';
如果一切都失败了,总是有
- 用适当的名称
- 复制数据在从旧表
- 删除旧表
- 创建新表(如 “xENG_TEst”)将新表重命名为最终名称
对我来说第二个选项的工作 – 2013-11-03 14:13:11
我刚刚得到了Op的错误本身。当我再次运行sp_rename时,我得到了正确的错误:对象'BlahColumnID'无法重命名,因为对象参与强制依赖关系。就我而言,这是因为BlahColumnID参与了计算列功能。 – AlwaysLearning 2014-03-10 05:12:23
对我来说,我不得不在第二个建议的语法前加上'[dbo] .':[[dbo]。[ENG_TEst]。[ENG_Test_A/C_TYPE]'。我特别的问题是使用实体框架的RenameColumn(),虽然它是sp_rename的包装。 – levininja 2015-04-01 15:52:43
您是否在正确的数据库中运行查询?即
Use MyDatabase;
GO
EXEC sp_rename 'ENG_TEst.[ENG_Test_A/C_TYPE]', 'ENG_Test_AC_TYPE', 'COLUMN';
GO
我也有这个问题 - 非常讨厌,还没有找到一个令人满意的sql答案(除了涉及创建临时表等冗长的问题),我没有时间去探索它,结果我会喜欢。
最后,只需使用SQL Server Management Studio通过选择表,右键单击列并点击重命名即可。 简单!
显然我宁愿知道如何做到没有gui但有时你只是得让sh **完成!
您可以单击工具栏中的“脚本”图标查看SSMS如何执行它! – 2011-03-25 12:00:26
@MartinSmith你可以让SSMS编写通过对象浏览器重命名列的动作吗?我无法弄清楚如何。我能想到的唯一方法是使用SQL Profiler来追踪它,但这很重要。 – 2013-03-06 17:36:46
@IainElder - 您可以,但您需要在设计视图中打开表格,然后重命名该列,然后编写更改。如果你直接在树视图中重命名列,那么它只是没有给它脚本编写的机会。 – 2013-03-06 17:56:07
以下两项工作(as discussed here)。
exec sp_rename 'ENG_TEst.[[ENG_Test_A/C_TYPE]]]' ,
'ENG_Test_A/C_TYPE', 'COLUMN'
exec sp_rename 'ENG_TEst."[ENG_Test_A/C_TYPE]"' ,
'ENG_Test_A/C_TYPE', 'COLUMN'
这工作
EXEC sp_rename
@objname = 'ENG_TEst."[ENG_Test_A/C_TYPE]"',
@newname = 'ENG_Test_A/C_TYPE',
@objtype = 'COLUMN'
我认为objectname应该是objname – curiousBoy 2014-02-05 21:58:15
只是尝试删除链接到该列的统计指标。
最好的问候。
更新代码第一个MVC5数据库时出现此错误。从我的数据库中删除(右键单击,删除)所有表格,并从Migration文件夹中删除迁移对我有用。
我就遇到了这个今天得到它一起工作:
EXECUTE sp_rename N'dbo.table_name.original_field_name', N'new_field_name', 'COLUMN'
为了得到这个语法,我跟着上面马丁·史密斯的建议 - 在设计视图中打开表,重命名列,然后单击表设计师|生成更改脚本。这产生低于该做的重命名脚本分为两步:
/* To prevent any potential data loss issues, you should review this script in
detail before running it outside the context of the database designer.*/
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
EXECUTE sp_rename N'dbo.table_name.original_field_name', N'Tmp_new_field_name_1', COLUMN'
GO
EXECUTE sp_rename N'dbo.table_name.Tmp_new_field_name_1', N'new_field_name', 'COLUMN'
GO
ALTER TABLE dbo.table_name SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
其次,对于SSMS不提供改变脚本的情况,即改变索引;在重命名时运行SQL分析器跟踪,以查看它生成的脚本。 – 2014-03-11 10:45:53
我试着在这个网站每一个可能的解决方案并没有什么工作适合我。我最终做了设计模式。右键单击表名称,然后单击设计。然后我改了名字并保存在这里。工作简单。
向我们展示'ENG_MYTALLY'的定义 – egrunin 2010-06-22 08:56:10
在我的情况下,我得到了这个错误,因为我尝试更新的表名不存在。 – Samuel 2013-05-27 21:06:27
这是由于类名(模型)名称的冲突,当自动创建表和... – 2015-02-16 17:23:09