จุดบกพร่อง #: 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