Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 在SQL Server中重命名列时出现问题_Sql Server 2005 - Fatal编程技术网

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