Număr eroare: 187868 (întreținere conținut)VSTS: 1340145

Microsoft distribuie remedierile Microsoft SQL Server 2012 într-un fișier descărcabil. Deoarece remedierile sunt cumulative, fiecare lansare nouă conține toate remedierile rapide și toate actualizările de securitate care au fost incluse în anterioară SQL Server 2012 release de actualizare.

Simptome

Să luăm în considerare următorul scenariu:

  • Creați o procedură stocată care utilizează o valoare de tabel parametru (TVP) în Microsoft SQL Server 2012.

  • Utilizați SQL Profiler sau SQL Server extins evenimente pentru a captura RPC: pornirea și RPC: finalizat evenimente.

  • Executați o interogare care utilizează TVP.

  • Interogarea expiră.

În acest scenariu, apare o eroare și programator și interogări care se execută pe același program se execută lent. În plus, este generat un fișier imagine de mini-memorie în folderul Jurnal SQL Server.
Când apare această problemă, primiți un mesaj de eroare asemănător cu următorul:

System.Data.SqlClient.SqlException (0x80131904): Expirare a expirat. Expirarea perioadei de expirare înainte de terminarea operațiunii sau serverul nu răspunde.
la System.Data.SqlClient.SqlInternalConnection.OnError (SqlException excepție, Boolean breakConnection)
la System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
la System.Data.SqlClient.TdsParserStateObject.ReadSniError (TdsParserStateObject stateObj, UInt32 eroare)
la System.Data.SqlClient.TdsParserStateObject.ReadSni (DbAsyncResult asyncResult, TdsParserStateObject stateObj)
la System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
la System.Data.SqlClient.TdsParserStateObject.ReadByte()
la System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
la System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
la System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior RunBehavior runBehavior, Boolean returnStream, Boolean async)
la System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior RunBehavior runBehavior, Boolean returnStream, metoda de șir, DbAsyncResult rezultate)
la System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (String methodName DbAsyncResult rezultate, Boolean sendToPipe)
la System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
la TVPApp.Program.Main (String [] args)


Eroare programator și împreună cu un mesaj de eroare asemănător cu următorul se înregistrează în Jurnalul de erori SQL Server:

< Data >< ora > Server utilizând 'dbghelp.dll' versiune '4.0.5'
< Data >< ora > Server *** imposibil pentru a obține thread context pentru spid #
<Date><Time> Server * *******************************************************************************
< Data >< ora > Server *
< Data >< ora > Server * începe STACK DUMP:
Server < data >< ora > * < data >< ora > spid #
< Data >< ora > Server *
< Data >< ora > Server * și programator
< Data >< ora > Server *
<Date><Time> Server * *******************************************************************************
< Data >< ora > Server semnătura stivei de imagine de memorie este 0x000000000000002C
< Data >< ora > Server extern imagine proces return code 0x20000001.
Procesul de imagine de memorie externă a returnat fără erori.
Proces de Server < data >< ora > 0:0:0 (0x1670) lucrător 0x0000000004EDE160 apare ca și programator 5. Thread momentul creării: 13014210386757. Fir de aproximativ CPU folosite: kernel 0 ms, d utilizator 70106 procesul de utilizare a 16 %. Sistem de inactivitate 77 %. Interval: 70140 ms.
Proces de Server < data >< ora > 0:0:0 (0x1670) lucrător 0x0000000004EDE160 apare ca și programator 5. Fir de momentul creării:

Cauza

Această problemă se produce din cauza unei erori în motorul de baze de date SQL Server 2012. Coloane de text în TVP implementate, introduceți șiruri sau tampoane și o creștere a numărului de rânduri crește numărul de tampon. Cu toate acestea, procesul care lansează buffers este mult timp. De aceea, se generează o eroare de program și când de lansare și micșorarea operațiuni apar.

Notă O problemă similară a fost abordată în următorul articol din baza de cunoștințe Microsoft. Cu toate acestea, pachetul de actualizare cumulativă, care este descrisă în articolul nu este pentru o problemă de expirare de interogare.

2520808 FIX: și programator eroare atunci când executați o interogare care utilizează un TVP în SQL Server 2008 sau în SQL Server 2008 R2, dacă se utilizează SQL Profiler sau SQL Server extins evenimente

Rezolvare

Informații despre actualizarea cumulativă

Pachetul de actualizare cumulativă 5 pentru SQL Server 2012 Service Pack 1 (SP1)

Remedierea pentru această problemă a fost lansată prima dată în 5 de actualizare cumulativă. Pentru mai multe informații despre cum se obține acest pachet de actualizare cumulativă pentru SQL Server 2012, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:

2861107 Cumulative update pachet de 5 pentru SQL Server 2012Notă Deoarece compilările sunt cumulative, fiecare nouă lansare de remediere conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în SQL Server 2012 anterior lansată. Vă recomandăm să luaţi în considerare aplicarea celei mai recente lansări de remediere care conține această remediere rapidă. Pentru mai multe informaţii, faceţi clic pe următorul număr de articol pentru a vedea articolul în baza de cunoştinţe Microsoft:

2772858 SQL Server 2012 se bazează care au fost lansate după lansarea SQL Server 2012 Service Pack 1

Soluție

Pentru a rezolva această problemă, utilizați una dintre următoarele metode:

  • Nu utilizați SQL Profiler sau SQL Server extins evenimente.

  • Faceți clic pentru a debifa RPC: pornirea și RPC: finalizat casetele de selectare din definiția de urmărire.

Mai multe informații

Această remediere nu se aplică la SQL Server 2008 sau SQL Server 2008 R2, atunci când acest KB este publicat. Dacă utilizatorii orice apare aceeași problemă în SQL Server 2008 sau SQL Server 2008 R2, chiar și după ce utilizatorii aplica pachetul care este descrisă în următorul articol, validarea dacă există o expirare de interogare și determinați dacă un interval de timp poate fi rezolvată. În caz contrar, remiteți o solicitare pentru a aplica această remediere pentru SQL Server 2008 sau SQL Server 2008 R2.

2520808 FIX: și programator eroare atunci când executați o interogare care utilizează un TVP în SQL Server 2008 sau în SQL Server 2008 R2, dacă se utilizează SQL Profiler sau SQL Server extins evenimente

Informații despre stiva de apeluri

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

Stare

Microsoft a confirmat că aceasta este o problemă cu produsele Microsoft enumerate în secţiunea „Se aplică la".

Author: jannaw
Writer: v-yipli
Examinare tehnică: pradm; jannaw; hozhan
Editor: v-mordew

Aveți nevoie de ajutor suplimentar?

Extindeți-vă competențele
Explorați instruirea
Fiți primul care obține noile caracteristici
Alăturați-vă la Microsoft Insider

V-a fost de ajutor această informație?

Cât de mulțumit sunteți de calitatea traducerii?

Ce v-a afectat experiența?

Aveți feedback suplimentar? (Opțional)

Vă mulțumim pentru feedback!

×