sp_rename与列有什么不对?

时间:2013-12-07 10:39:56

标签: sql sql-server sql-server-2008

我正在使用以下SQL命令与sp_rename重命名列。

USE MYSYS;
GO
EXEC sp_rename 'MYSYS.SYSDetails.AssetName', 'AssetTypeName', 'COLUMN';
GO

但它导致错误:

  

Msg 15248,Level 11,State 1,Procedure sp_rename,Line 238
  参数@objname不明确或声称@objtype(COLUMN)错误。

请使用sp_rename建议如何重命名列。

[我在Microsoft Technet发现的这个命令]

4 个答案:

答案 0 :(得分:14)

试试这个:

USE MYSYS;
GO
EXEC sp_rename 'SYSDetails.AssetName', 'AssetTypeName', 'COLUMN';
GO

sp_rename(Transact-SQL)(msdn):

  

[@objname =]'object_name'

     

是用户对象的当前限定名称还是非限定名称   数据类型。 如果要重命名的对象是表格中的列,   object_name必须采用table.column或schema.table.column。的形式   如果要重命名的对象是索引,则object_name必须位于   form table.index或schema.table.index。如果要重命名的对象是   一个约束,object_name必须是schema.constraint形式。

     

仅当指定了限定对象时,才需要引号。   如果提供了完全限定名称,包括数据库名称,则   数据库名称必须是当前数据库的名称。 object_name是   nvarchar(776),没有默认值。

具有完全限定名称的语法:

USE Database
GO
EXEC sp_rename 'Database.Schema.TableName.ColumnName', 'NewColumnName', 'COLUMN';
GO

如果您希望 objectname 具有完全限定名称,则还应指定架构。因此,如果您的 SYSDetails 表位于 dbo 架构中,则此代码应该适合您:

USE MYSYS;
GO
EXEC sp_rename 'MYSYS.dbo.SYSDetails.AssetName', 'AssetTypeName', 'COLUMN';
GO

答案 1 :(得分:0)

仔细检查您的表SYSDetails是否存在。如果目标表不存在,则会出现此错误。

答案 2 :(得分:0)

我收到此错误,因为列名不正确。有时错误的表名或错误的列名可能会导致此问题。

答案 3 :(得分:0)

对我来说有效

USE **DatabaseName**
GO
EXEC sp_rename 'Schema.TableName.ColumnName', 'NewColumnName', 'COLUMN';
GO

这是为我工作的例子

EXEC sp_rename 'dbo.Facility.facilityName', 'FacilityName', 'COLUMN'