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

อาการ

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

  • เซิร์ฟเวอร์ที่ถูกเชื่อมโยงถูกกำหนดค่าระหว่างเซิร์ฟเวอร์ภายในเครื่องและเซิร์ฟเวอร์ระยะไกลว่า ทั้งสองมีอินสแตนซ์ของ Microsoft SQL Server 2012

  • เซิร์ฟเวอร์ภายในถูกกำหนดค่า โดยใช้การเปรียบเทียบหนึ่ง เช่นการเปรียบเทียบเทียบ

  • เซิร์ฟเวอร์ระยะไกลมีวัตถุที่มีการกำหนดค่าในการเปรียบเทียบที่แตกต่างจากเซิร์ฟเวอร์ท้องถิ่น เช่นเปรียบเทียบเทียบ

  • จะทำการเชื่อมต่อจากโปรแกรมควบคุม Microsoft JDBC สำหรับ SQL Server โปรแกรมควบคุม Microsoft ODBC SQL Server, SQL OLE DB provider หรือ SQL Native Client ไปยังเซิร์ฟเวอร์ภายในเครื่อง

  • โปรแกรมควบคุมที่ดำเนินการแบบสอบถามปรับปรุงคำสั่งกลุ่ม SQL เป็นคำสั่งที่เตรียมไว้ที่เรียกกระบวนงานเก็บไว้sp_prepexecบนเซิร์ฟเวอร์ภายใน

  • แบบสอบถามปรับปรุงตารางบนเซิร์ฟเวอร์ระยะไกล ซึ่งรวมถึงวัตถุคอลัมน์ที่ใช้การเปรียบเทียบที่แตกต่างจากเซิร์ฟเวอร์ภายในเครื่อง

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

ตัวอย่างเช่น แบบสอบถามเตรียมไว้บนเซิร์ฟเวอร์ภายในเครื่องที่มีการเปรียบเทียบ และเซิร์ฟเวอร์ระยะไกลมีตารางT1ที่ประกอบด้วยคอลัมน์ที่เล็ก การปรับปรุงจะสแกนแถวทั้งหมดของT1
DECLARE @p1 INTEXEC sp_prepexec @p1 output, N'@P0 NVARCHAR(16), @P1 NVARCHAR(16)',
N'UPDATE RemoteServer.RemoteDatabase.dbo.T1 SET COL1=@P0 WHERE COL2=@P1',
N'a', N'a'
SELECT @p1

สาเหตุ

ปัญหานี้เกิดขึ้นเนื่องจากแบบสอบถาม update ที่เตรียมไว้จะสแกนตารางระยะไกลเมื่อเปรียบเทียบไม่ตรงกับบนเซิร์ฟเวอร์ทั้งสอง

แต่ละโปรแกรมปรับปรุงสะสมใหม่สำหรับ SQL Server ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมด และทั้งหมดที่แก้ไขความปลอดภัยที่ถูกรวมอยู่ในการปรับปรุงที่สะสมก่อนหน้านี้ ตรวจหาการปรับปรุงสะสมล่าสุดสำหรับ SQL Server:


ข้อมูลโปรแกรมแก้ไขด่วนมีโปรแกรมแก้ไขด่วนที่รองรับพร้อมให้บริการจาก Microsoft อย่างไรก็ตาม โปรแกรมแก้ไขด่วนนี้มุ่งหวังเพื่อการแก้ไขเฉพาะปัญหาที่อธิบายไว้ในบทความนี้ ใช้ hotfix นี้เฉพาะกับระบบต่าง ๆ ที่พบปัญหานี้

หากโปรแกรมแก้ไขด่วนพร้อมสำหรับการดาวน์โหลด คุณจะเห็นส่วน "มีโปรแกรมแก้ไขด่วนพร้อมสำหรับการดาวน์โหลด" ที่ด้านบนของบทความฐานข้อมูลองค์ความรู้นี้ หากส่วนนี้ไม่ปรากฏขึ้น ส่งคำขอถึงฝ่ายบริการและการสนับสนุนลูกค้าของ Microsoft และวิธีการขอรับโปรแกรมแก้ไขด่วน

หมายเหตุ ถ้ามีปัญหาอื่น ๆ เกิดขึ้น หรือถ้าจำเป็นต้องแก้ไขปัญหาใด ๆ คุณอาจต้องสร้างคำขอรับบริการแยกต่างหาก จะมีค่าใช้จ่ายในการสนับสนุนปกติกับคำถามเพิ่มเติมและเรื่องอื่น ๆ ที่ไม่มีสิทธิได้รับโปรแกรมแก้ไขด่วนเฉพาะนี้ สำหรับรายชื่อทั้งหมด ของหมายเลขโทรศัพท์ของฝ่ายบริการลูกค้าของ Microsoft และการสนับสนุน หรือ เพื่อสร้างการร้องขอบริการแยกต่างหาก แวะไปที่เว็บไซต์ของ Microsoft ต่อไปนี้:

http://support.microsoft.com/contactus/?ws=supportหมายเหตุ แบบฟอร์ม "มีโปรแกรมแก้ไขด่วนพร้อมสำหรับการดาวน์โหลด" แสดงภาษาที่โปรแกรมแก้ไขด่วนพร้อมใช้งาน ถ้าคุณไม่เห็นภาษาของคุณ อาจเป็น เพราะไม่มีโปรแกรมแก้ไขด่วนพร้อมใช้งานสำหรับภาษานั้น

ข้อกำหนดเบื้องต้นเมื่อต้องการใช้โปรแกรมแก้ไขด่วนนี้ คุณต้องมี 2012 เซิร์ฟเวอร์ SQL ที่ติดตั้งอยู่

ข้อมูลรีจิสทรีคุณไม่จำเป็นต้องเปลี่ยนแปลงรีจิสทรีหลังจากที่คุณใช้โปรแกรมแก้ไขด่วนนี้

ข้อมูลการแทนที่โปรแกรมแก้ไขด่วนโปรแกรมแก้ไขด่วนนี้ไม่ได้แทนโปรแกรมแก้ไขด่วนอื่น ๆ


สถานะ

Microsoft ยืนยันว่านี่เป็นปัญหาในผลิตภัณฑ์ของ Microsoft ซึ่งแสดงไว้ในส่วน "นำไปใช้กับ"

วิธีแก้ปัญหา

การทำงาน abound ปัญหา ใช้หนึ่งในวิธีต่อไปนี้:

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

  • ใช้เปรียบเทียบตรงกันบนเซิร์ฟเวอร์ทั้งสอง

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

เมื่อต้องการเปิดใช้งานการสืบค้นกลับค่าสถานะ เพิ่มพารามิเตอร์เริ่มต้น-T4199หรือDBCC TRACEON(4199,-1)ก่อนที่คำสั่งเตรียมไว้ถูกคอมไพล์เพื่อเปิดใช้งานลักษณะการทำงาน

คุณสามารถใช้หนึ่งในวิธีต่อไปนี้เพื่อเปิดใช้งานการสืบค้นกลับค่าสถานะ:

  • ก่อนที่คุณเริ่มต้นเซิร์ฟเวอร์ SQL ใช้โปรแกรมจัดการการตั้งค่าคอนฟิกเซิร์ฟเวอร์ SQL Microsoft คลิกขวาที่อินสแตนซ์ที่ได้รับผลกระทบ และเพิ่มพารามิเตอร์เริ่มต้น-T4199เพื่อที่จะยังคงอยู่ ระหว่างการเริ่มระบบ และในแต่ ละการเชื่อมต่อกับอินสแตนซ์ทั้งหมดในอนาคต

  • การตั้งค่า ในขณะทำงานหลังจากที่ได้รับการเริ่มต้นบริการ และส่วนกลาง สำหรับ "(-1) การเชื่อมต่อทั้งหมดที่เปิดใช้งานแบบไดนามิก" ตรวจสอบให้แน่ใจว่าว่างถ้าคุณวางแผนที่จะทำการทดสอบกับสวิตช์เปิด หรือปิดใช้งานการแคกระบวนงาน

    ใช้ต่อไปนี้เพื่อเปิดใช้งานการตั้งค่าแบบส่วนกลาง และแบบไดนามิก:
    DBCC TRACEON(4199,-1)DBCC TRACESTATUS(-1)
    DBCC FREEPROCCACHE
    ใช้ต่อไปนี้เพื่อปิดใช้งานการตั้งค่าแบบส่วนกลาง และแบบไดนามิก:
    DBCC TRACEOFF(4199,-1)DBCC TRACESTATUS(-1)
    DBCC FREEPROCCACHE


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

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

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

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

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

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

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

×