2010-01-25 75 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