0

我們的團隊需要在我們的SQL Server 2008數據庫中插入殘酷的數據。我們正在尋找一個好的解決方案。現在我們提出了一個,但我對此懷疑,只是因爲它感覺不對。所以我在這裏問這是否是一個很好的解決方案。額外的挑戰是它是一個超過4臺服務器的點對點複製數據庫! :)批量複製插入DBCC CheckIdent

試想我們有一個百萬行上表中插入

  1. 開始交易
  2. 增加電流的ident值100萬
  3. 有一個DataSet/DataTable中準備好一個百萬行和正確的ID
  4. BulkCopy的數據到數據庫
  5. 提交交易

這是一個很好的解決方案,我們可能會遇到併發問題,有太大的交易等等。

回答

0

你只會遇到問題(據我所知,所以可能有些事情我忽略了!)如果數據庫在線並且用戶可以將行插入到該表中。增加meta-level上新行的標識值只是意味着系統插入的下一行將使用該數字,因此如果您將其與100萬相撞,則意味着您預先保留了這些數字。

標識列很「好」,但有副作用,它們不可轉讓。因此,如果您必須將數據遷移到另一個數據庫,請意識到您可能必須調整插入的數據以匹配您插入的數據庫(因爲這是數據的範圍,這意味着標識字段可能與表中已有的行發生衝突)。

如果這是一次性的事情,它可能會解決。如果你打算經常這樣做,我會考慮一個更高級別的遷移系統,將數據遷移到新的身份值,或者使用帶有NEWSEQUENTIALID()的guid,以便獲得適當的檢查索引以及唯一的可轉移ID 。