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