我该如何解决“参数@objname不明确或声称@objtype(COLUMN)错误。”?

时间:2010-06-22 08:52:27

标签: sql sql-server

如果我尝试执行以下查询:

EXEC sp_rename 'ENG_TEst.[ENG_Test_A/C_TYPE]', 'ENG_Test_AC_TYPE', 'COLUMN'

我收到错误:

  

参数@ objname是   模棱两可或声称@objtype   (COLUMN)错了。

我该如何解决?

9 个答案:

答案 0 :(得分:24)

螺母。几个星期前我遇到了同样的错误,经过大量的浪费时间想出如何让它发挥作用 - 但我已经忘记了它。 (没有多大帮助,除了说是,可以做到。)

您是否尝试过不同的括号组合,或者有没有括号的组合? e.g。

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”)
  • 从旧表中复制数据
  • 放弃旧桌子
  • 将新表重命名为最终名称

答案 1 :(得分:14)

您是否在正确的数据库中运行查询?即,

Use MyDatabase;
GO
EXEC sp_rename 'ENG_TEst.[ENG_Test_A/C_TYPE]', 'ENG_Test_AC_TYPE', 'COLUMN';
GO

答案 2 :(得分:14)

这有效

EXEC sp_rename 
@objname = 'ENG_TEst."[ENG_Test_A/C_TYPE]"', 
@newname = 'ENG_Test_A/C_TYPE', 
@objtype = 'COLUMN'

答案 3 :(得分:5)

我今天遇到了这个问题,并将其与之合作:

EXECUTE sp_rename N'dbo.table_name.original_field_name', N'new_field_name', 'COLUMN' 

为了获得这种语法,我遵循了上面的Martin Smith的建议 - 在设计视图中打开表,重命名列,然后单击表设计器|生成更改脚本。这产生了下面的脚本,它分两步重命名:

/* 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

答案 4 :(得分:1)

我也有这个问题 - 非常讨厌,但我自己还没有找到一个令人满意的sql答案(除了涉及创建临时表等的冗长的答案),我没有时间去探讨它的结论我我喜欢。

最后只使用SQL Server Management Studio来选择表格,右键单击列并点击重命名。 simples!

显然,我宁愿知道如何在没有gui的情况下做到这一点,但有时你只需要完成它!

答案 5 :(得分:1)

更新代码第一个MVC5数据库时出现此错误。从我的数据库中删除(右键单击,删除)所有表,并从Migration文件夹中删除迁移对我有用。

答案 6 :(得分:0)

以下两项工作(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'

答案 7 :(得分:0)

我在这个网站上尝试了所有可能的解决方案,但对我来说没有任何效果。我最终在设计模式下做了。右键单击表名,然后单击“设计”。然后我改名并保存在这里。工作简单。

答案 8 :(得分:-1)

只是尝试删除链接到此COLUMN的STATISTICS INDEXES。

最诚挚的问候。