สรุป
SQL Server จะไม่ยอมให้คุณใส่ค่าที่ชัดเจนในคอลัมน์ข้อมูลประจำตัวเว้นแต่ว่าคุณจะใช้รายการคอลัมน์ ดังนั้นคุณมีตัวเลือกต่อไปนี้:
- ทำรายการคอลัมน์ (ด้วยตนเองหรือใช้เครื่องมือดูด้านล่าง)
หรือ
- สร้างคอลัมน์ข้อมูลประจำตัวในคอลัมน์
tbl_A_archiveปกติและไม่ใช่ข้อมูลประจำตัว : หากตารางของคุณเป็นตารางเก็บถาวรและคุณระบุค่าที่ชัดเจนสำหรับคอลัมน์ข้อมูลประจำตัวทำไมคุณถึงต้องมีคอลัมน์ข้อมูลประจำตัวด้วย เพียงใช้ int ปกติแทน
รายละเอียดเกี่ยวกับโซลูชันที่ 1
แทน
SET IDENTITY_INSERT archive_table ON;
INSERT INTO archive_table
SELECT *
FROM source_table;
SET IDENTITY_INSERT archive_table OFF;
คุณต้องเขียน
SET IDENTITY_INSERT archive_table ON;
INSERT INTO archive_table (field1, field2, ...)
SELECT field1, field2, ...
FROM source_table;
SET IDENTITY_INSERT archive_table OFF;
กับfield1, field2, ...ที่มีชื่อของคอลัมน์ทั้งหมดในตารางของคุณ หากคุณต้องการสร้างรายการคอลัมน์นั้นโดยอัตโนมัติให้ดูที่คำตอบของเดฟหรือคำตอบของแอนโดมาร์
รายละเอียดเกี่ยวกับโซลูชัน 2
น่าเสียดายที่เป็นไปไม่ได้ที่จะ "เปลี่ยนประเภท" ของคอลัมน์ข้อมูลเฉพาะตัวเป็นคอลัมน์ไม่ใช่ข้อมูลประจำตัว โดยทั่วไปคุณมีตัวเลือกดังต่อไปนี้:
- หากตารางเก็บถาวรยังไม่มีข้อมูลให้วางคอลัมน์และเพิ่มตารางใหม่โดยไม่มีข้อมูลระบุตัวตน
หรือ
- ใช้ SQL Server Studio จัดการการตั้งค่า
Identity Specification/ ทรัพย์สินของคอลัมน์ประจำในตารางเก็บของคุณไป(Is Identity) Noเบื้องหลังฉากนี้จะสร้างสคริปต์เพื่อสร้างตารางและคัดลอกข้อมูลที่มีอยู่ดังนั้นจะทำอย่างไรที่คุณจะยังต้องล้างTools/ Options/ Designers/ /Table and Database DesignersPrevent saving changes that require table re-creation
หรือ