sp_rename与列有什么不对?

Adi*_*tya 5 sql sql-server sql-server-2008

我使用以下SQL命令sp_rename来重命名列.

USE MYSYS;
GO
EXEC sp_rename 'MYSYS.SYSDetails.AssetName', 'AssetTypeName', 'COLUMN';
GO
Run Code Online (Sandbox Code Playgroud)

但它导致错误:

消息15248,级别11,状态1,过程sp_rename,行238
参数@objname不明确或声明的@objtype(COLUMN)错误.

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

[我使用的这个命令在Microsoft Technet上找到]

kma*_*zek 16

试试这个:

USE MYSYS;
GO
EXEC sp_rename 'SYSDetails.AssetName', 'AssetTypeName', 'COLUMN';
GO
Run Code Online (Sandbox Code Playgroud)

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),没有默认值.

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

USE Database
GO
EXEC sp_rename 'Database.Schema.TableName.ColumnName', 'NewColumnName', 'COLUMN';
GO
Run Code Online (Sandbox Code Playgroud)

如果要在对象名中包含完全限定名称,则还应指定模式.因此,如果您的SYSDetails表位于dbo架构中,则此代码应该适合您:

USE MYSYS;
GO
EXEC sp_rename 'MYSYS.dbo.SYSDetails.AssetName', 'AssetTypeName', 'COLUMN';
GO
Run Code Online (Sandbox Code Playgroud)