2011-03-16 93 views
4

所以我想從Conversion_Fee_PerShare只是Conversion Fee重命名我的表中的列。問題在SQL Server中重命名列

我在網上看了看,發現語法是:

sp_RENAME 'TableName.[OldColumnName]', '[NewColumnName]', 'COLUMN' 

,我寫我的查詢爲:

sp_RENAME 'dbo.AllocationDetails.[Conversion_Fee_Per_Share]' , '[Conversion_Fee]', 'COLUMN' 

現在的列名已成爲[Conversion_Fee],而不是Conversion_Fee

現在,如果我試圖像這樣再次重新命名:

sp_RENAME 'dbo.AllocationDetails.[Conversion_Fee]' , 'Conversion_Fee', 'COLUMN' 

它給了我一個錯誤說:

消息15248,級別11,狀態1, 過程sp_rename可以,213線在任何 參數@objname不明確或 所要求的@objtype(列) 錯了。

我試着改變Table Drop Column AllocationDetails。[Conversion_Fee]它沒有這樣工作。

請告訴我正確的語法?

回答

4

沒關係,我發現:

ALTER TABLE dbo.AllocationDetails 
DROP COLUMN [[Conversion_Fee]]] 

OR

sp_RENAME 'dbo.AllocationDetails.[[Conversion_Fee]]]' , 'Conversion_Fee', 'COLUMN' 

這些將正常工作。 :)

使用雙引號:

exec sp_rename 'dbo.AllocationDetails."[Conversion_Fee]"' , 'Conversion_Fee', 'COLUMN' 

也會起作用。

+0

如果您發佈的代碼,XML或數據樣本,** **請在高亮文本編輯器的線,然後單擊「代碼示例」按鈕('{} ')在編輯器工具欄上進行恰當的格式化和語法突出顯示! – 2011-03-16 19:34:26

7
/*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_rename呼叫通過SELECT QUOTENAME('[Conversion_Fee_Per_Share]')的是,返回使用。

或者更直接主動地可以使用

EXEC sp_rename 
    'dbo.AllocationDetails."[Conversion_Fee]"', 
    'Conversion_Fee', 
    'COLUMN' 

QUOTED_IDENTIFIER總是被設置爲在該存儲過程,這不依賴於你在你的會話設置具有這種上。

+1

@Andriy--我現在沒有,但現在。 'exec sp_rename'dbo.AllocationDetails。「[Conversion_Fee]」','Conversion_Fee','COLUMN''也可以。 – 2011-03-16 20:16:31

3

要解決這個問題:

sp_RENAME 'dbo.AllocationDetails.[[Conversion_Fee]]]' , 'Conversion_Fee', 'COLUMN' 
0

運行以下查詢在一起。

USE [DATABASE_NAME]; 

GO 
EXEC sp_rename '[SCHEMA_NAME].[TABLE_NAME].OLD_COLUMN_NAME', 'NEW_COLUMN_NAME', 'COLUMN'; 
GO 

這將解決您的問題