2010-07-20 55 views
4

我正在從事一個項目,我需要將數據從一個數據庫傳輸到另一個數據庫(通過一些小的轉換)。當我打到我的第一個時間戳列時,一切都很順利......SQL Server 2K - 爲時間戳列插入顯式值?

看來SQL Server不希望我爲這種類型的列使用顯式值,而是想要生成它自己的列。

如果有辦法,使用T-SQL,我可以從一個表到另一個表中獲取這些數據?

+1

@標記這不完全是因爲用例不同。 OP想要遷移現有數據,而不是簡單地將任意數據插入到時間戳字段中。這是一個有效的問題。 – MDCore 2014-05-29 16:54:02

回答

4

注意:名稱時間戳已被棄用,新的​​(更準確的)名稱是rowversion。

兩個答案:

號:類型rowversion的SQL服務器列總是會產生和由數據庫服務器設置。

是:如果在目標表中使用不同的數據類型。從rowversion列讀取的值可以存儲在varbinary列中。所以你可以在新表中創建一個varbinary列來保存舊錶中的值。當然,前進這個varbinary列不會像rowversion列那樣自動更新。

3

  • 這是一個獨特的(在數據庫級別)二進制(8)值
  • 的值將在不同的數據庫沒有意義
  • 數據庫引擎維護,並增加相應的

我剛剛用一個着名的數據比較工具進行了檢查,它說它可以比較它們但不能同步它們。

0

我不擔心源數據庫與目標數據庫之間的列內容不同。

我假設「數據」你幾乎意味着實際業務用戶需要或想要的東西。

timestamp列(或行版本或其他)是內部控制數據,不應將任何值傳遞給業務用戶。

它被/與TSEQUALS()函數一起使用以確定在讀取和更新之間行是否已經改變。將所有列添加到where子句的捷徑。