小编典典

带有列的sp_rename有什么问题?

sql

我正在使用以下SQL命令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上找到]


阅读 223

收藏
2021-04-19

共1个答案

小编典典

试试这个:

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

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

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
2021-04-19