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

อาการ

พิจารณาสถานการณ์ต่อไปนี้:

  • คุณแทรกแถวหลายแถวลงในตารางใน Microsoft SQL Server ๒๐๐๘หรือใน SQL Server ๒๐๐๘ R2 โดยใช้หนึ่งในคิวรีต่อไปนี้:

    • INSERT INTO <target_table> SELECT * FROM <target_table> WHERE <predicate>
    • SELECT * INTO <target_table> FROM <source_table> WHERE <predicate>

    หมายเหตุ

    • พื้นที่ที่สำรองไว้ของ ><target_table แสดงชื่อตารางเป้าหมายที่แท้จริง

    • พื้นที่ที่สำรองไว้ของ เพรดิเคต<> แสดงเพรดิเคตที่แท้จริง

    • พื้นที่ที่สำรองไว้ของ ><source_table จะแสดงตารางต้นฉบับที่แท้จริง

  • เกินขีดจำกัดการเลื่อนระดับการล็อกของตาราง

ในสถานการณ์สมมตินี้กลไกจัดการฐานข้อมูลไม่ได้เลื่อนระดับการล็อกของตาราง

สาเหตุ

ปัญหานี้เกิดขึ้นเนื่องจาก SQL Server จะไม่นับรวมล็อกใหม่ทั้งหมดที่สร้างขึ้นโดยการแทรกการดำเนินการ ดังนั้นค่าเกณฑ์การเลื่อนระดับการล็อกอาจไม่ถูกทริกเกอร์เมื่อจำเป็น

การแก้ไข

ข้อมูล service pack สำหรับ SQL Server ๒๐๐๘

เมื่อต้องการแก้ไขปัญหานี้ให้รับ service pack ล่าสุดสำหรับ SQL Server 2008 สำหรับข้อมูลเพิ่มเติมให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

๙๖๘๓๘๒ วิธีการขอรับ service pack ล่าสุดสำหรับ SQL Server ๒๐๐๘

ข้อมูล service pack สำหรับ SQL Server ๒๐๐๘ R2

เมื่อต้องการแก้ไขปัญหานี้ให้ขอรับ service pack ล่าสุดสำหรับ SQL Server ๒๐๐๘ R2 สำหรับข้อมูลเพิ่มเติมให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

๒๕๒๗๐๔๑วิธีการขอรับ service pack ล่าสุดสำหรับ SQL Server ๒๐๐๘ R2

สถานะ

Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"ปัญหานี้ได้รับการแก้ไขแล้วใน SQL Server ๒๐๐๘ Service Pack 2 สำหรับ SQL Server 2008 ปัญหานี้ได้รับการแก้ไขแล้วใน SQL Server ๒๐๐๘ R2 Service Pack 1 สำหรับ sql Server ๒๐๐๘ R2 ครั้งแรก

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเลื่อนระดับการล็อกแวะไปที่เว็บไซต์ Microsoft TechNet ดังต่อไปนี้:

ข้อมูลทั่วไปเกี่ยวกับการเลื่อนระดับการล็อกเมื่อต้องการตรวจสอบว่าล็อกของตารางถูกเลื่อนระดับหรือไม่ให้เรียกใช้คำสั่ง Transact SQL ต่อไปนี้:

USE tempdbGOCREATE TABLE x (i INT NOT NULL PRIMARY KEY)GOBEGIN TRANINSERT xSELECT TOP (40000)ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rFROM master..spt_values a, master..spt_values bORDER BYrSELECTCOUNT(*)FROM sys.dm_tran_locksWHERE request_session_id = @@SPID ROLLBACKGODROP TABLE x 

ถ้าการล็อกของตารางถูกเลื่อนระดับแล้วคำสั่ง SELECT สุดท้ายจะส่งกลับค่าเป็น1หรือ2 ถ้าการล็อกของตารางไม่ได้เลื่อนระดับแล้วคำสั่ง SELECT สุดท้ายจะส่งกลับค่าของ๔๐,๐๖๖หรือ๔๐,๐๖๗

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

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

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

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

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

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

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

×