Feil #: 187868 (Innholdsvedlikehold)VSTS: 1340145
Microsoft distribuerer hurtigreparasjoner for Microsoft SQL Server 2012 i én nedlastbar fil. Fordi reparasjonene er kumulative, inneholder hver nye utgivelse alle hurtigreparasjonene og alle sikkerhetsoppdateringene som var inkludert i den forrige SQL Server 2012 utgivelsen av oppdateringen.
Symptomer
Tenk deg følgende:
-
Du oppretter en lagret prosedyre som bruker en tabell objektegenskap parameter (TVP) i Microsoft SQL Server 2012.
-
Du bruker SQL-Profiler eller utvidet SQL Server-hendelser til å fange opp de RPC: fra og RPC: fullført hendelser.
-
Du kjører en spørring som bruker TVP.
-
Spørringen blir tidsavbrutt.
I dette scenariet planlegger en ikke-noe som gir en feil oppstår, og spørringer som kjøres på samme planleggeren kjører sakte. I tillegg genereres det en mini dumpfilen i SQL Server Logg-mappen.
Når dette skjer, får du en feilmelding som ligner på følgende:System.Data.SqlClient.SqlException (0x80131904): Et tidsavbrudd. Tidsavbruddsperioden utløp før fullføring av operasjonen eller serveren svarer ikke.
på System.Data.SqlClient.SqlInternalConnection.OnError (SqlException-unntak, boolske breakConnection) ved System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() på System.Data.SqlClient.TdsParserStateObject.ReadSniError (TdsParserStateObject stateObj, UInt32 feil) på System.Data.SqlClient.TdsParserStateObject.ReadSni (DbAsyncResult asyncResult, TdsParserStateObject stateObj) ved System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket() ved System.Data.SqlClient.TdsParserStateObject.ReadByte() på System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand-cmdHandler, SqlDataReader dataflyt, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) på System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) på System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, boolsk returnStream, boolske asynkron) på System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, boolske returnStream, streng metode, resultatet av DbAsyncResult) på System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (DbAsyncResult resultat, noe methodName streng, boolsk sendToPipe) ved System.Data.SqlClient.SqlCommand.ExecuteNonQuery() ved TVPApp.Program.Main (String [] args)Ikke gir scheduler feilen sammen med en feilmelding som ligner på følgende, logges i SQL Server-feilloggen:
< Dato >< tid > Server ved hjelp av 'dbghelp.dll' versjon '4.0.5'
< Dato >< gang > Server *** kan ikke hente omgivelser for tråd for spid # <Date><Time> Server * ******************************************************************************* < Dato >< gang > Server * < Dato >< gang > Server * Start STAKKDUMP: < Dato >< gang > Server * < dato >< gang > spid # < Dato >< gang > Server * < Dato >< gang > Server * ikke-fører til Oppgaveplanlegging < Dato >< gang > Server * <Date><Time> Server * ******************************************************************************* < Dato >< gang > Server Stack signatur for dump er 0x000000000000002C < Dato >< tid > Server eksterne dump prosessen retur koden 0x20000001. Eksterne dump-prosess returnerte ingen feil. < Dato >< gang > serverprosessen 0:0:0 (0x1670) arbeider 0x0000000004EDE160 ser ut til å være ikke-noe som gir en på Scheduler 5. Tråd opprettingstidspunkt: 13014210386757. Omtrentlig tråd CPU brukt: kjernen 0 ms, bruker 70106 FR. prosessen utnyttelse 16%. System Idle 77%. Intervall: ms 70140. < Dato >< gang > serverprosessen 0:0:0 (0x1670) arbeider 0x0000000004EDE160 ser ut til å være ikke-noe som gir en på Scheduler 5. Tråd opprettingstidspunkt:Årsak
Dette problemet oppstår på grunn av en feil i SQL Server 2012 Database Engine. Tekstspalter i TVP implementeres som setter inn strenger eller buffere, og en økning i antall rader øker antall buffere. Det er imidlertid tidkrevende prosessen som utgir buffere. Derfor planlegger en ikke-noe som gir en feil genereres når slipper og redusere operasjoner utføres.
Obs! Et lignende problem er omtalt i følgende Microsoft Knowledge base-artikkel. Kumulativ oppdateringspakke som er beskrevet i artikkelen er imidlertid ikke spørringen tidsavbrudd-spørsmål.Løs 2520808 : scheduler gir feil når du kjører en spørring som bruker en TVP i SQL Server 2008 eller i SQL Server 2008 R2 Hvis du bruker SQL-Profiler eller utvidet SQL Server-hendelser
Oppløsning
Informasjon om kumulativ oppdatering
Kumulativ oppdateringspakke 5 for SQL Server 2012 Service Pack 1 (SP1)
Hurtigreparasjonen for dette problemet ble først utgitt i kumulative oppdateringen 5. Hvis du vil ha mer informasjon om hvordan du får tak i denne kumulative oppdateringen for SQL Server 2012, klikker du følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
2861107 kumulativ sikkerhetsoppdateringspakke 5 for SQL Server 2012Obs! Fordi versjoner er kumulative, inneholder hver nye fix-utgivelse alle hurtigreparasjonene og sikkerhetsreparasjonene som var inkludert i den forrige SQL Server 2012 Løs utgivelsen. Vi anbefaler at du vurderer å bruke den nyeste versjonen av hurtigreparasjonen som inneholder denne hurtigreparasjonen. Hvis du vil ha mer informasjon, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
2772858 for SQL Server 2012 bygger som er utgitt etter Service Pack 1 for SQL Server 2012 ble utgitt
Løsningen
Hvis du vil omgå dette problemet, bruker du én av følgende metoder:
-
Ikke bruk SQL-Profiler eller utvidet SQL Server-hendelser.
-
Klikk for å fjerne den RPC: fra og RPC: fullført merket i spor-definisjonen.
Hvis du vil ha mer informasjon
Denne løsningen gjelder ikke for SQL Server 2008 eller SQL Server 2008 R2 når denne KB-artikkelen publiseres. Hvis alle brukere får det samme problemet i SQL Server 2008 eller SQL Server 2008 R2 etter at brukerne installerer pakke som er beskrevet i følgende artikkel, validere Hvis det oppstår et tidsavbrudd for spørring og finne ut om tidsavbruddet kan være løst. Hvis ikke, sende en forespørsel om å bruke denne feilrettingen i SQL Server 2008 eller SQL Server 2008 R2.
Løs 2520808 : scheduler gir feil når du kjører en spørring som bruker en TVP i SQL Server 2008 eller i SQL Server 2008 R2 Hvis du bruker SQL-Profiler eller utvidet SQL Server-hendelser
Kallstakk
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
Status
Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".
Author: jannaw
Writer: v-yipli Teknisk redaktør: pradm; jannaw; hozhan Editor: v-mordew