ข้ามไปที่เนื้อหาหลัก
การสนับสนุน
ลงชื่อเข้าใช้
ลงชื่อเข้าใช้ด้วย Microsoft
ลงชื่อเข้าใช้หรือสร้างบัญชี
สวัสดี
เลือกบัญชีอื่น
คุณมีหลายบัญชี
เลือกบัญชีที่คุณต้องการลงชื่อเข้าใช้

อาการ

เมื่อคุณใช้ฟังก์ชัน SCOPE_IDENTITY()หรือ @@IDENTITYเพื่อรับค่าที่แทรกลงในคอลัมน์ข้อมูลเฉพาะตัว คุณอาจสังเกตเห็นว่าในบางครั้งฟังก์ชันเหล่านี้จะส่งกลับค่าที่ไม่ถูกต้อง ปัญหาจะเกิดขึ้นเมื่อคิวรีของคุณใช้แผนปฏิบัติการแบบขนานเท่านั้น For more information on how to determine if your queries are going to use parallel execution plans refer to the Intra-query parallelism section in the following technical article on Microsoft Downloads:

สาเหตุ

Microsoft ได้ยืนยันว่าปัญหานี้เป็นปัญหาในผลิตภัณฑ์ของ Microsoft ที่แสดงอยู่ในตอนต้นของบทความนี้

การแก้ไข

ข้อมูลโปรแกรมอัปเดตสะสม

SQL Server 2008 R2 Service Pack 1

การแก้ไขของปัญหานี้ถูกปล่อยครั้งแรกในการอัปเดตสะสม 5 for SQL Server 2008 R2 Service Pack 1 For more information about how to obtain this cumulative update package, click the following article number to view the article in the Microsoft Knowledge Base: 

2659694แพคเกจการอัปเดตสะสม 5 ของ SQL Server 2008 R2 Service Pack 1

หมายเหตุ เนื่องจากบิลด์เป็นแบบสะสม การแก้ไขใหม่แต่ละรุ่นจะมีการแก้ไขด่วนทั้งหมดและการแก้ไขด้านความปลอดภัยทั้งหมดที่รวมอยู่ในรุ่นแก้ไขของ SQL Server 2008 R2 ก่อนหน้า เราขอแนะนนะให้คุณพิจารณาใช้การแก้ไขล่าสุดที่มีการแก้ไขด่วนนี้ สำหรับข้อมูลเพิ่มเติม โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base:

2567616รุ่น SQL Server 2008 R2 ที่เผยแพร่หลังจากเปิดตัว SQL Server 2008 R2 Service Pack 1 แล้ว

วิธีแก้ไขปัญหาชั่วคราว

Microsoft ขอแนะให้คุณไม่ใช้ฟังก์ชันใดฟังก์ชันหนึ่งในคิวรีของคุณเมื่อมีแผนคู่ขนานเนื่องจากแผนเหล่านี้ไม่น่าเชื่อถือเสมอไป ให้ใช้ส่วนสั่ง OUTPUT ของข้อความ INSERT เพื่อรับค่าข้อมูลเฉพาะตัวตามที่แสดงในตัวอย่างด้านล่างแทน

ตัวอย่างของการใช้ส่วนสั่ง OUTPUT:

DECLARED @MyNewIdentityValues table(myidvalues int)
ประกาศ@A (ID คีย์หลัก)
แทรก@A (1)
ประกาศ@B (ID เป็นข้อมูลเฉพาะตัวของคีย์หลัก(1,1), B int not null)
แทรก@B (1)
เลือก
    [RowCount] = @@RowCount,
    [@@IDENTITY] = @@IDENTITY,
    [SCOPE_IDENTITY] = SCOPE_IDENTITY()

ตั้งค่าโปรไฟล์สถิติเมื่อ
แทรก_ddr_T
ผลลัพธ์ inserted.ID เป็น @MyNewIdentityValues
    เลือก
            
b.ID         จาก @A a
            การรวมด้านซ้าย@B b เมื่อวันที่ b.ID = 1
            การรวมด้านซ้าย@B b2 บน b2 B = -1

            การรวมด้านซ้าย_ddr_T t บน t.T = -1

        เมื่อไม่มีอยู่ (เลือก * จาก _ddr_T t2 โดยที่ t2.ID = -1)
ตั้งค่าโปรไฟล์สถิติปิดอยู่

เลือก
    [RowCount] = @@RowCount,
    [@@IDENTITY] = @@IDENTITY,
    [SCOPE_IDENTITY] = SCOPE_IDENTITY(),
    [IDENT_CURRENT] = IDENT_CURRENT('_ddr_T')
เลือก * จาก @MyNewIdentityValues
ไป

ถ้าสถานการณ์ของคุณต้องการให้คุณใช้ฟังก์ชันใดฟังก์ชันหนึ่งเหล่านี้ คุณสามารถใช้หนึ่งในวิธีต่อไปนี้เพื่อแก้ไขปัญหาชั่วคราว

วิธีที่ 1:

รวมตัวเลือกต่อไปนี้ในคิวรีของคุณ

OPTION (MAXDOP 1)

หมายเหตุ: ซึ่งอาจเจ็บประสิทธิภาพการการคํานวณของส่วน SELECT ของคิวรีของคุณ

วิธีที่ 2:

อ่านค่าจากส่วน SELECT ลงในชุดของตัวแปร (หรือตัวแปรตารางเดียว) แล้วแทรกลงในตารางเป้าหมายด้วย MAXDOP=1 เนื่องจากแผน INSERT จะไม่ถูกขนานไปกับผลลัพธ์ที่ถูกต้อง แต่ SELECT ของคุณจะขนานไปกับประสิทธิภาพที่ต้องการ

วิธีที่ 3:

เรียกใช้ข้อความต่อไปนี้เพื่อตั้งค่าองศา สูงสุดของตัวเลือกแนวขนาน เป็น 1:

sp_configure 'องศาสูงสุดของแนวขนาน', 1

ไป

ตั้งค่าใหม่ด้วยการแทนที่

ไป

หมายเหตุ: วิธีนี้อาจทําให้ประสิทธิภาพการลดลงของเซิร์ฟเวอร์ คุณไม่ควรใช้วิธีการนี้นอกจากว่าคุณได้ประเมินวิธีการดังกล่าวในสภาพแวดล้อมการทดสอบหรือการจัดเตรียม

ข้อมูลเพิ่มเติม

ข้อบกพร่องของ Microsoft Connect เกี่ยวกับhttps://docs.microsoft.com/en-us/collaborate/connect-redirect

ระดับความขนานสูงสุด (MAXDOP)

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ

ชุมชนช่วยให้คุณถามและตอบคําถาม ให้คําติชม และรับฟังจากผู้เชี่ยวชาญที่มีความรู้มากมาย

ข้อมูลนี้เป็นประโยชน์หรือไม่

คุณพึงพอใจกับคุณภาพภาษาเพียงใด
สิ่งที่ส่งผลต่อประสบการณ์ใช้งานของคุณ
เมื่อกดส่ง คำติชมของคุณจะถูกใช้เพื่อปรับปรุงผลิตภัณฑ์และบริการของ Microsoft ผู้ดูแลระบบ IT ของคุณจะสามารถรวบรวมข้อมูลนี้ได้ นโยบายความเป็นส่วนตัว

ขอบคุณสำหรับคำติชมของคุณ!

×