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

จุดบกพร่อง #: 187868 (การบำรุงรักษาเนื้อหา)VSTS: 1340145

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

อาการ

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

  • คุณสร้างกระบวนงานเก็บไว้ที่ใช้พารามิเตอร์ค่าเป็นตาราง (TVP) ใน Microsoft SQL Server 2012

  • คุณใช้ตัวสร้างโพรไฟล์ SQL หรือ SQL Server ขยายเหตุการณ์เพื่อจับภาพRPC: เริ่มต้นและRPC: เสร็จสมบูรณ์เหตุการณ์

  • คุณเรียกใช้แบบสอบถามที่ใช้ใน TVP

  • แบบสอบถามหมดเวลา

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

System.Data.SqlClient.SqlException (0x80131904): การหมดเวลาหมดอายุแล้ว การหมดเวลาของรอบระยะเวลาที่ผ่านไปก่อนที่จะดำเนินการเสร็จสมบูรณ์ของการดำเนินงาน หรือเซิร์ฟเวอร์ไม่ตอบสนอง
ใน System.Data.SqlClient.SqlInternalConnection.OnError (ยกเว้น SqlException, breakConnection บูลีน)
ใน System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
ที่ System.Data.SqlClient.TdsParserStateObject.ReadSniError (TdsParserStateObject stateObj ข้อผิดพลาด UInt32)
ที่ System.Data.SqlClient.TdsParserStateObject.ReadSni (DbAsyncResult asyncResult, TdsParserStateObject stateObj)
ใน System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
ใน System.Data.SqlClient.TdsParserStateObject.ReadByte()
ที่ System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
ใน System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior สตริ resetOptionsString)
ที่ System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, returnStream บูลีน ต่างเวลาบูลีน)
ที่ System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, returnStream บูลีน วิธีสตริง ผลลัพธ์ DbAsyncResult)
ใน System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (ผลลัพธ์ DbAsyncResult สตริ methodName, sendToPipe บูลีน)
ใน System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
ใน TVPApp.Program.Main (สตริงที่[]อาร์กิวเมนต์)


ไม่ใช่ผลลัพธ์ตัวจัดกำหนดการข้อผิดพลาดพร้อม ด้วยข้อผิดพลาดที่คล้ายกับต่อไปนี้ถูกบันทึกในแฟ้มบันทึกข้อผิดพลาด SQL Server:

<วัน >< เวลา > รุ่นของเซิร์ฟเวอร์โดยใช้ 'dbghelp.dll' '4.0.5'
<วันที่ >< เวลา > เซิร์ฟเวอร์ *** ไม่สามารถรับบริบทเธรดสำหรับ spid #
<Date><Time> Server * *******************************************************************************
<วันที่ >< เวลา > เซิร์ฟเวอร์ *
<วันที่ >< เวลา > เซิร์ฟเวอร์ * ถ่ายโอนข้อมูลกองซ้อนเริ่มต้น:
<วันที่ >< เวลา > เซิร์ฟเวอร์ * spid <วัน >< เวลา > #
<วันที่ >< เวลา > เซิร์ฟเวอร์ *
<วันที่ >< เวลา > เซิร์ฟเวอร์ * ไม่ใช่ส่งตัวจัดกำหนดการ
<วันที่ >< เวลา > เซิร์ฟเวอร์ *
<Date><Time> Server * *******************************************************************************
ลายเซ็นของสแตกเซิร์ฟเวอร์ <วัน >< เวลา > สำหรับการถ่ายโอนข้อมูลคือ 0x000000000000002C
รหัส <วัน >< คืนกระบวนการถ่ายโอนข้อมูลภายนอกของเวลา > เซิร์ฟเวอร์ 0x20000001
กระบวนการถ่ายโอนข้อมูลภายนอกไม่มีข้อผิดพลาดที่ส่งคืน
กระบวนการเซิร์ฟเวอร์ <วัน >< เวลา > 0:0:0 (0x1670) ของผู้ปฏิบัติงาน 0x0000000004EDE160 ปรากฏเป็นไม่ใช่ส่งบน 5 ตัวจัดกำหนดการงาน เวลาที่สร้างเธรด: 13014210386757 ที่ใช้เธรด Approx CPU: เคอร์เนล 0 ms นางสาวผู้ใช้ 70106 ใช้ประโยชน์กระบวนการ 16% 77% ที่ไม่ได้ใช้ระบบ ช่วง: ms 70140
กระบวนการเซิร์ฟเวอร์ <วัน >< เวลา > 0:0:0 (0x1670) ของผู้ปฏิบัติงาน 0x0000000004EDE160 ปรากฏเป็นไม่ใช่ส่งบน 5 ตัวจัดกำหนดการงาน เวลาที่สร้างกลุ่มหัวข้อ:

สาเหตุ

ปัญหานี้เกิดขึ้นเนื่องจาก มีข้อผิดพลาดใน SQL Server 2012 Database Engine คอลัมน์ข้อความใน TVP ถูกนำไปใช้ขณะแทรกบัฟเฟอร์หรือสตริ และการเพิ่มจำนวนแถวที่เพิ่มจำนวนของบัฟเฟอร์ อย่างไรก็ตาม กระบวนการที่นำออกใช้บัฟเฟอร์จะใช้เวลานาน ดังนั้น ข้อผิดพลาดไม่ใช่ส่งตัวจัดกำหนดการจะถูกสร้างขึ้นเมื่อมีการนำออกใช้ และลดขนาดการดำเนินงานเกิดขึ้น

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

2520808แก้ไข: ผลลัพธ์ที่ไม่ใช่ตัวจัดกำหนดการข้อผิดพลาดเมื่อคุณเรียกใช้แบบสอบถามที่ใช้เป็น TVP ใน SQL Server 2008 หรือ ใน SQL Server 2008 R2 ถ้ามีการใช้ตัวสร้างโพรไฟล์ SQL หรือ SQL Server ขยายเหตุการณ์

การแก้ปัญหา

ข้อมูลการปรับปรุงสะสม

แพคเกจโปรแกรมปรับปรุงสะสม 5 สำหรับ SQL Server 2012 Service Pack 1 (SP1)

การแก้ไขสำหรับปัญหานี้ถูกนำออกใช้แล้วในการปรับปรุงสะสม 5 ครั้งแรก สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการขอรับแพคเกจโปรแกรมปรับปรุงนี้สำหรับ SQL Server 2012 คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

2861107 Cumulative ปรับปรุงแพคเกจ 5 สำหรับ SQL Server 2012หมายเหตุ เนื่องจากรุ่นเป็นแบบสะสม แต่ละรุ่นแก้ไขใหม่ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมด และแก้ไขการรักษาความปลอดภัยทั้งหมดที่ถูกรวมกับ 2012 เซิร์ฟเวอร์ SQL ก่อนหน้านี้แก้ไขการนำออกใช้ เราขอแนะนำว่า คุณควรพิจารณาถึงการใช้การแก้ไขที่นำออกใช้ล่าสุดที่ประกอบด้วยโปรแกรมแก้ไขด่วนนี้ สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

2772858 2012 เซิร์ฟเวอร์ SQL สร้างที่เปิดตัวหลังจากเปิดตัว SQL Server 2012 Service Pack 1

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

เมื่อต้องการหลีกเลี่ยงปัญหานี้ ใช้หนึ่งในวิธีต่อไปนี้:

  • อย่าใช้ตัวสร้างโพรไฟล์ SQL หรือ SQL Server ขยายเหตุการณ์

  • คลิกเพื่อยกเลิกการRPC: เริ่มต้นและRPC: เสร็จสมบูรณ์กล่องกาเครื่องหมายในคำนิยามการสืบค้นกลับ

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

การแก้ไขนี้ไม่ใช้กับ SQL Server 2008 หรือ SQL Server 2008 R2 เมื่อมีการเผยแพร่ KB ถ้าผู้ใช้มีปัญหาแบบเดียวกันใน SQL Server 2008 หรือ SQL Server 2008 R2 แม้หลังจากที่ผู้ใช้ใช้แพคเกจที่ได้อธิบายไว้ในบทความต่อไปนี้ ถ้าไม่มีการหมดเวลาของแบบสอบถามการตรวจสอบ และตรวจสอบว่า สามารถแก้ไขค่าหมดเวลาเป็น มิฉะนั้น ส่งคำขอการใช้การแก้ไขนี้กับ SQL Server 2008 หรือ SQL Server 2008 R2

2520808แก้ไข: ผลลัพธ์ที่ไม่ใช่ตัวจัดกำหนดการข้อผิดพลาดเมื่อคุณเรียกใช้แบบสอบถามที่ใช้เป็น TVP ใน SQL Server 2008 หรือ ใน SQL Server 2008 R2 ถ้ามีการใช้ตัวสร้างโพรไฟล์ SQL หรือ SQL Server ขยายเหตุการณ์

เรียกข้อมูลการกองซ้อน

sqlmin!CLinkedMap<__int64,CCheckReadersAndWriters::CCounts>::FLookup+0x29sqlmin!CCheckReadersAndWriters::Release+0x69
sqlmin!CMainIlb::{dtor}+0x3d
sqlmin!CMainIlb::`scalar deleting destructor'+0x3d
sqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13
sqlmin!CMainIlb::Release+0xf0
sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80
sqllang!CTraceTvpData::{dtor}+0x14
sqllang!CTraceTvpData::`scalar deleting destructor'+0x1e
sqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x33
sqllang!CRpcTraceHelper::~CRpcTraceHelper+0x70
sqllang!CRPCExecEnv::~CRPCExecEnv+0x2ab
sqllang!CRPCExecEnv::`scalar deleting destructor'+0x14
sqllang!process_request+0x10b1
sqllang!process_commands+0x51c
sqldk!SOS_Task::Param::Execute+0x21e
sqldk!SOS_Scheduler::RunTask+0xa8
sqldk!SOS_Scheduler::ProcessTasks+0x299
sqldk!SchedulerManager::WorkerEntryPoint+0x261
sqldk!SystemThread::RunWorker+0x8f
sqldk!SystemThreadDispatcher::ProcessWorker+0x3c8
sqldk!SchedulerManager::ThreadEntryPoint+0x236
kernel32!BaseThreadInitThunk+0xd
ntdll!RtlUserThreadStart+0x1d
sqlmin!CLinkedMap<__int64,CCheckReadersAndWriters::CCounts>::FDelete+0x34sqlmin!CCheckReadersAndWriters::Release+0xfb
sqlmin!CMainIlb::{dtor}+0x3d
sqlmin!CMainIlb::`scalar deleting destructor'+0x3d
sqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13
sqlmin!CMainIlb::Release+0xf0
sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80
sqllang!CTraceTvpData::{dtor}+0x11
sqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x55
sqllang!CRpcTraceHelper::TracePostExec+0x1bf
sqllang!CRPCExecEnv::OnExecFinish+0xaa
sqllang!CProtocolHeaderInfo::{dtor}+0xffffffff`ffb158e2
sqllang!process_request+0x764
sqllang!process_commands+0x51c
sqldk!SOS_Task::Param::Execute+0x21e
sqldk!SOS_Scheduler::RunTask+0xa8
sqldk!SOS_Scheduler::ProcessTasks+0x29a
sqldk!SchedulerManager::WorkerEntryPoint+0x261
sqldk!SystemThread::RunWorker+0x8f
sqldk!SystemThreadDispatcher::ProcessWorker+0x3c8
sqldk!SchedulerManager::ThreadEntryPoint+0x236
kernel32!BaseThreadInitThunk+0x1a
ntdll!RtlUserThreadStart+0x1d

สถานะ

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

Author: jannaw
Writer: v-yipli
ผู้ตรวจทานด้านเทคนิค: pradm; jannaw; hozhan
Editor: v-mordew

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

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

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

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

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

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

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

×