2012-04-27 63 views
2

我不確定是否有必要。我有一個SQL Server 2008數據庫,其中所有的表都有一個時間戳列。是否最好將timestamp數據類型更改爲rowversion,以便可以輕鬆升級到未來的sql server版本?如果是這樣,將所有時間戳列更改爲rowversion而不重新創建表的最佳方法是什麼?將時間戳記數據類型更改爲rowversion

回答

2

隨意改變你的腳本,以顯示ROWVERSION而不是TIMESTAMP,但在試圖使表中的任何改變沒有意義。即使在SQL Server 2012中,而他們早就發誓要消除混淆的名稱,即使你創建一個這樣的表:

USE tempdb; 
GO 
CREATE TABLE dbo.foo 
(
    bar INT, 
    rv ROWVERSION 
); 

的目錄視圖和一切內部仍然認爲,作爲TIMESTAMP:

SELECT c.name, [type] = TYPE_NAME(c.system_type_id) 
    FROM sys.columns AS c 
    WHERE [object_id] = OBJECT_ID('dbo.foo'); 

結果:

name type 
---- --------- 
foo int 
rv timestamp 

所以我真的不認爲這有什麼,你(或任何人)可以做的更好的爲未來版本做好準備 - 微軟將有LOT與您在同一條船上的客戶,這可能是您爲什麼沒有真正看到這種類型的快速驅逐。他們可能還在制定計劃,以真正消除它(他們正在選擇名稱,除了DATETIME2恕我直言除外)好得多。

我最好的建議就是確保您的腳本和對象都使用ROWVERSION,這樣您就不會感到意外。這可能意味着需要手動編輯從Management Studio生成的腳本,目錄視圖甚至第三方工具。

相關問題