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

Pen*_*uen 45 sql sql-server

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

EXEC sp_rename 'ENG_TEst.[ENG_Test_A/C_TYPE]', 'ENG_Test_AC_TYPE', 'COLUMN'
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

参数@ objname是不明确的,或者声明的@objtype(COLUMN)是错误的.

我该如何解决?

Phi*_*ley 25

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

您是否尝试过不同的括号组合,或者有没有括号的组合?例如

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';
Run Code Online (Sandbox Code Playgroud)

如果一切都失败了,总会有

  • 使用适当的名称创建新表("xENG_TEst")
  • 从旧表复制数据
  • 放旧桌子
  • 将新表重命名为最终名称

  • 对我来说第二个选项有效 (3认同)

Orl*_*ndo 16

这有效

EXEC sp_rename 
@objname = 'ENG_TEst."[ENG_Test_A/C_TYPE]"', 
@newname = 'ENG_Test_A/C_TYPE', 
@objtype = 'COLUMN'
Run Code Online (Sandbox Code Playgroud)


Joe*_*lli 14

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

Use MyDatabase;
GO
EXEC sp_rename 'ENG_TEst.[ENG_Test_A/C_TYPE]', 'ENG_Test_AC_TYPE', 'COLUMN';
GO
Run Code Online (Sandbox Code Playgroud)


Jim*_*m B 7

我今天遇到了这个问题并得到了它:

EXECUTE sp_rename N'dbo.table_name.original_field_name', N'new_field_name', 'COLUMN' 
Run Code Online (Sandbox Code Playgroud)

为了获得这种语法,我按照上面的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
Run Code Online (Sandbox Code Playgroud)