我正在使用以下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发现的这个命令]
答案 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'