2013-10-03 53 views
3

我在sql server 2012中有一個sql表,我需要重命名。我知道在其他數據庫系統執行此的方法如下:使用sp_rename重命名SQL表的優點是什麼?

ALTER TABLE table_name 
    RENAME TO new_table_name; 

然而,似乎SQL Server要求不同的語法。從SQL Management Studio中我改名爲表中的設計視圖,右單擊以生成改變腳本,它產生了以下:

BEGIN TRANSACTION 
GO 
EXECUTE sp_rename N'table_name', N'new_table_name', 'OBJECT' 
GO 
ALTER TABLE new_table_name SET (LOCK_ESCALATION = TABLE) 
GO 
COMMIT 

是使用sp_rename重命名的最佳做法?

此外還有一個額外的行來設置lock_esclation =表。這是必需的嗎?

+4

的'ALTER TABLE ...重命名...'語法上沒有任何SQL Server版本有效我曾與之合作過 - 它不出現在[MSDN]上(http://technet.microsoft.com/en-us/library/ms190273%28v=sql.90%29.aspx)。從一個快速的谷歌它似乎是postgresql語法。 – Bridge

+2

確實。即使[MSDN](http://technet.microsoft.com/zh-cn/library/aa337520.aspx)在其示例中列出了「sp_rename」。 (另外,重新:LOCK_ENCAPSULATION,http://stackoverflow.com/questions/1703597/lock-escalation-whats-happening-here) –

回答

12

我猜(有點諷刺)答案是使用sp_rename的優勢在於它實際上是SQL Server上的有效語法,而前者僅在PostgreSQL上有效(documentation)。

要查看ALTER TABLE的有效選項 - 請參閱MSDN

下面是使用Sp_rename的例子:

EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr'; 

Documentationsp_rename

相關問題