Sql server 2005 在SQL Server中重命名列时出现问题
因此,我试图将表中的一列从Sql server 2005 在SQL Server中重命名列时出现问题,sql-server-2005,Sql Server 2005,因此,我试图将表中的一列从Conversion\u Fee\u PerShare重命名为Conversion Fee 我在网上查了一下,发现语法是: sp_RENAME 'TableName.[OldColumnName]', '[NewColumnName]', 'COLUMN' 我将我的查询写为: sp_RENAME 'dbo.AllocationDetails.[Conversion_Fee_Per_Share]' , '[Conversion_Fee]', 'COLUMN' 列名现在
Conversion\u Fee\u PerShare
重命名为Conversion Fee
我在网上查了一下,发现语法是:
sp_RENAME 'TableName.[OldColumnName]', '[NewColumnName]', 'COLUMN'
我将我的查询写为:
sp_RENAME 'dbo.AllocationDetails.[Conversion_Fee_Per_Share]' , '[Conversion_Fee]', 'COLUMN'
列名现在变成了[Conversion\u Fee]
,而不是Conversion\u Fee
现在,如果我再次尝试这样重命名:
sp_RENAME 'dbo.AllocationDetails.[Conversion_Fee]' , 'Conversion_Fee', 'COLUMN'
它给了我一个错误,说:
消息15248,第11级,状态1,
程序sp_重命名,第213行
参数@objname不明确或错误
声明的@objtype(列)为
错
我试图更改表Drop Column AllocationDetails。[转换费]它也无法以这种方式工作
什么是正确的语法?别介意我发现:
ALTER TABLE dbo.AllocationDetails
DROP COLUMN [[Conversion_Fee]]]
或
这些很好用。:)
使用双引号:
exec sp_rename 'dbo.AllocationDetails."[Conversion_Fee]"' , 'Conversion_Fee', 'COLUMN'
也会起作用
/*Initial Table*/
CREATE TABLE AllocationDetails
(
Conversion_Fee_Per_Share FLOAT
)
/*Faulty Rename*/
EXEC sp_rename
'dbo.AllocationDetails.[Conversion_Fee_Per_Share]',
'[Conversion_Fee]',
'COLUMN'
/*Fixed Rename*/
EXEC sp_rename
'dbo.AllocationDetails.[[Conversion_Fee]]]',
'Conversion_Fee',
'COLUMN'
DROP TABLE AllocationDetails
第二个sp\u rename
调用中使用的列名是SELECT QUOTENAME(“[Conversion\u Fee\u Per\u Share]”)返回的列名。
或者,可以使用更直接的方式
EXEC sp_rename
'dbo.AllocationDetails."[Conversion_Fee]"',
'Conversion_Fee',
'COLUMN'
对于该存储过程,QUOTED\u IDENTIFIER
始终设置为on,因此这不依赖于您在会话设置中启用它。要解决此问题:
sp_RENAME 'dbo.AllocationDetails.[[Conversion_Fee]]]' , 'Conversion_Fee', 'COLUMN'
一起运行以下查询
USE [DATABASE_NAME];
GO
EXEC sp_rename '[SCHEMA_NAME].[TABLE_NAME].OLD_COLUMN_NAME', 'NEW_COLUMN_NAME', 'COLUMN';
GO
它将解决您的问题如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(
{}
)以精确地格式化和语法突出显示它@安德烈-我没有,但现在有了exec sp_重命名“dbo.AllocationDetails”。[Conversion_Fee]“,“Conversion_Fee”,“COLUMN”
。
USE [DATABASE_NAME];
GO
EXEC sp_rename '[SCHEMA_NAME].[TABLE_NAME].OLD_COLUMN_NAME', 'NEW_COLUMN_NAME', 'COLUMN';
GO