Applies ToSQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

จุดบกพร่อง #: 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+0x69sqlmin!CMainIlb::{dtor}+0x3dsqlmin!CMainIlb::`scalar deleting destructor'+0x3dsqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13sqlmin!CMainIlb::Release+0xf0sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80sqllang!CTraceTvpData::{dtor}+0x14sqllang!CTraceTvpData::`scalar deleting destructor'+0x1esqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x33sqllang!CRpcTraceHelper::~CRpcTraceHelper+0x70sqllang!CRPCExecEnv::~CRPCExecEnv+0x2absqllang!CRPCExecEnv::`scalar deleting destructor'+0x14sqllang!process_request+0x10b1sqllang!process_commands+0x51csqldk!SOS_Task::Param::Execute+0x21esqldk!SOS_Scheduler::RunTask+0xa8sqldk!SOS_Scheduler::ProcessTasks+0x299sqldk!SchedulerManager::WorkerEntryPoint+0x261sqldk!SystemThread::RunWorker+0x8fsqldk!SystemThreadDispatcher::ProcessWorker+0x3c8sqldk!SchedulerManager::ThreadEntryPoint+0x236kernel32!BaseThreadInitThunk+0xdntdll!RtlUserThreadStart+0x1d  
sqlmin!CLinkedMap<__int64,CCheckReadersAndWriters::CCounts>::FDelete+0x34sqlmin!CCheckReadersAndWriters::Release+0xfbsqlmin!CMainIlb::{dtor}+0x3dsqlmin!CMainIlb::`scalar deleting destructor'+0x3dsqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13sqlmin!CMainIlb::Release+0xf0sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80sqllang!CTraceTvpData::{dtor}+0x11sqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x55sqllang!CRpcTraceHelper::TracePostExec+0x1bfsqllang!CRPCExecEnv::OnExecFinish+0xaasqllang!CProtocolHeaderInfo::{dtor}+0xffffffff`ffb158e2sqllang!process_request+0x764sqllang!process_commands+0x51csqldk!SOS_Task::Param::Execute+0x21esqldk!SOS_Scheduler::RunTask+0xa8sqldk!SOS_Scheduler::ProcessTasks+0x29asqldk!SchedulerManager::WorkerEntryPoint+0x261sqldk!SystemThread::RunWorker+0x8fsqldk!SystemThreadDispatcher::ProcessWorker+0x3c8sqldk!SchedulerManager::ThreadEntryPoint+0x236kernel32!BaseThreadInitThunk+0x1antdll!RtlUserThreadStart+0x1d 

สถานะ

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

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

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

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

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

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