2010-01-25 78 views
7

我需要編寫一些代碼在SQL Server中重命名列2008年
當腳本,在Management Studio中我得到了雙重重命名:奇怪的行爲重命名SQL Server中的列時2008

NAME1 ==> TEMAMENAME ==> NAME2

BEGIN TRANSACTION 
GO 
EXECUTE sp_rename N'dbo.Table_1.columFirstName', N'Tmp_columSecondName_2', 'COLUMN' 
GO 
EXECUTE sp_rename N'dbo.Table_1.Tmp_columSecondName_2', N'columSecondName', 'COLUMN' 
GO 
ALTER TABLE dbo.Table_1 SET (LOCK_ESCALATION = TABLE) 
GO 
COMMIT 

但是,當我一次性做到這一點,它的工作就好了。

爲什麼列首先被重命名爲臨時名稱?編碼重命名算法做同樣的事情是否有意義?

謝謝!

+1

偉大的問題 - 我一直都在想這個! – 2010-01-25 10:46:13

+0

我有SSMS 2008 - 你怎麼生成腳本?我找不到選項.. – Blorgbeard 2010-01-25 10:47:11

+1

在設計一個表格後,主鍵按鈕旁邊的按鈕被啓用。腳本帶有磁盤的圖標。點擊它可以獲得保存時會發生什麼的腳本。 (在保存之前單擊它) – Peter 2010-01-25 10:58:55

回答

6

您可以在兩列之間交換列名。 Management Studio支持將所有列重命名爲臨時名稱,然後將其重命名爲最終名稱。

Blorgbeard:在設計窗口的右鍵菜單中,有一個生成更改腳本選項。

+2

這可能是答案,但我不清楚。 – Peter 2010-01-25 10:59:39

+2

不是?開關A和B需要A到TMP,B到A,TMP到B.要將A,B,C移到B,C,A,您需要A到TMP,C到A,B到C,B到TMP 。要將A,B,C移到C,A,B,你需要A到TMP,B到A,C到B,TMP到C.這變得很複雜,爲什麼不按照他們的方式去做。 – 2010-01-25 11:14:50

+0

好吧,我現在看到它..起初我沒有聽到這句話。 TX。 – Peter 2010-01-25 11:39:29