首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 匯入匯出精靈常見錯誤:「無法在唯讀欄位插入資料」完整解決方案

     編輯:關於SqlServer

使用 SSMS「匯入/匯出資料」精靈複製資料表時,常遇驗證錯誤:

錯誤 0xc0202049: 無法在唯讀欄位「ID」中插入資料。
錯誤 0xc0202045: 驗證欄位中繼資料失敗。
錯誤 0xc004706b: 元件驗證失敗 (VS_ISBROKEN)。

根因

目標表含 IDENTITY (識別) 欄位,預設為唯讀,精靈嘗試寫入來源 ID 值導致衝突。

解決步驟 (圖文對應)

  1. 精靈「選擇來源資料表與檢視」頁面,勾選目標表後,點擊 「編輯對應」 (Edit Mappings)。
  2. 在「資料行對應」對話框,勾選 「啟用識別欄位插入」 (Enable Identity Insert)。
  3. 確定 → 繼續完成精靈。

原理說明

啟用後,精靈會在資料流前自動執行 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 (連結伺服器)

常見誤區

  • 以為「編輯對應」只能對應欄位名稱,忽略底部選項區。
  • 匯入前未檢查目標表約束 (FK、CHECK、觸發器),導致中途失敗。
  • 跨版本匯入 (如 2019 → 2012) 未處理不相容資料類型 (如 DATETIME2 → DATETIME)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved