當目標表定義了 IDENTITY(1000,1) 且含 NOT FOR REPLICATION 選項時,直接 INSERT INTO target SELECT * FROM source 會報錯:「當使用了列列表並且 IDENTITY_INSERT 為 ON 時,才能為表中的標識列指定顯式值。」
解決步驟:
SET IDENTITY_INSERT book ON;SELECT *:INSERT INTO book (書號, 書名, 出版社, ...) SELECT 書號, 書名, 出版社, ... FROM book1;SET IDENTITY_INSERT book OFF;核心結論: NOT FOR REPLICATION 表示複寫時不遵循 IDENTITY 規則,但手動跨表匯入數據時,仍需同時滿足兩個條件:IDENTITY_INSERT = ON 且 顯式列出所有欄位名稱。否則引擎無法確認你是否有意保留來源身份值,拒絕隱式插入。