我正在使用以下SQL命令sp_rename来重命名列。
sp_rename
USE MYSYS; GO EXEC sp_rename 'MYSYS.SYSDetails.AssetName', 'AssetTypeName', 'COLUMN'; GO
但这会导致错误:
消息15248,级别11,状态1,过程sp_rename,第238 行参数@objname含糊或声明的@objtype(COLUMN)错误。
请建议如何使用来重命名列sp_rename。
[我正在使用的此命令可以在Microsoft Technet上找到]
试试这个:
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的格式必须为table.index或schema.table.index。如果要重命名的对象是约束,则object_name的格式必须为schema.constraint。 仅在指定了合格对象的情况下才需要引号。 如果提供了包括数据库名称在内的标准名称,则该数据库名称必须是当前数据库的名称。 object_name是nvarchar(776),没有默认值。
[@objname =]’object_name’
是用户对象或数据类型的当前限定名称或非限定名称。 如果要重命名的对象是表中的列,则object_name的格式必须为table.column或schema.table.column。 如果要重命名的对象是索引,则object_name的格式必须为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
如果要在 对象名中 具有完全限定的名称,则还应该指定 schema 。因此,如果您的 SYSDetails 表位于 dbo 模式中,则此代码应为您工作:
USE MYSYS; GO EXEC sp_rename 'MYSYS.dbo.SYSDetails.AssetName', 'AssetTypeName', 'COLUMN'; GO