使用 SSMS「匯入/匯出資料」精靈複製資料表時,常遇驗證錯誤:
錯誤 0xc0202049: 無法在唯讀欄位「ID」中插入資料。 錯誤 0xc0202045: 驗證欄位中繼資料失敗。 錯誤 0xc004706b: 元件驗證失敗 (VS_ISBROKEN)。
目標表含 IDENTITY (識別) 欄位,預設為唯讀,精靈嘗試寫入來源 ID 值導致衝突。
啟用後,精靈會在資料流前自動執行 SET IDENTITY_INSERT TargetTable ON,允許明確指定 ID 值;資料寫入完成後自動 OFF。
| 情境 | 處理方式 |
|---|---|
| 來源無 ID,目標有 IDENTITY | 勿勾選 Enable Identity Insert,讓目標自動產生 |
| 來源有 ID,目標無 IDENTITY | 正常對應,無需特殊設定 |
| 雙方都有 IDENTITY,需保留來源 ID | 勾選 Enable Identity Insert (預設行為) |
| 大量資料 (百萬列+) | 精靈效能差,建議用 BCP、BULK INSERT、SSIS 或 INSERT...SELECT (連結伺服器) |
DATETIME2 → DATETIME)。