Microsoft distribuerer Microsoft SQL Server 2012-rettelser i én fil, der kan downloades. Da rettelserne er kumulative, indeholder hver ny version alle hotfixes og alle de sikkerhedsopdateringer, der var inkluderet i den forrige SQL Server 2012-opdateringsversion.
Symptomer
Overvej følgende scenarie:
-
Du opretter en lagret procedure, der bruger en tabelværdiparameter (TVP) i Microsoft SQL Server 2012.
-
Du kan bruge SQL Profiler eller SQL Server udvidede hændelser til at hente RPC:Starting- og RPC:Completed-hændelserne.
-
Du kører en forespørgsel, der bruger TVP.
-
Forespørgslen får timeout.
I dette scenarie opstår der en ikke-afkastende planlæggerfejl, og forespørgsler, der kører på den samme planlægger, kører langsomt. Desuden genereres en minidumpfil i den SQL Server logmappe.Når dette problem opstår, modtager du en fejlmeddelelse, der ligner følgende:
System.Data.SqlClient.SqlException (0x80131904): Timeout udløbet. Timeoutperioden for forløbet, før handlingen blev fuldført, eller serveren svarer ikke.på System.Data.SqlClient.SqlInternalConnection.OnError(SqlException-undtagelse, Boolean breakConnection)på System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()på System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32-fejl)på System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()på System.Data.SqlClient.TdsParserStateObject.ReadByte()at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)på System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolesk async)på System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, boolesk sendToPipe)på System.Data.SqlClient.SqlCommand.ExecuteNonQuery()på TVPApp.Program.Main(String[] args)
Den ikke-afkastende planlæggerfejl sammen med en fejlmeddelelse, der ligner følgende, logføres i SQL Server fejlloggen:
<Date><Time> Server Using 'dbghelp.dll' version '4.0.5'<Date><Time> Server ***Unable to get thread context for spid #<Date><Time> Server * *******************************************************************************><2 ******************************************************************************* Server til dato><klokkeslæt> *><6 dato><klokkeslæt> * START STAK DUMP:><0 dato><klokkeslæt> server * <dato><klokkeslæt> pid #><8 dato><klokkeslæt> server *><2 Dato><Klokkeslæt> Server * Ikke-returnerende Scheduler><6 Dato><klokkeslæt> Server *<Server><dato> server * *******************************************************************************<Dato><klokkeslæt> serverstaksignatur for dumpet er 0x000000000000002C< dato><klokkeslæt> server, returneres 0x20000001.Ekstern dumpproces returnerede ingen fejl.<Dato><klokkeslæt> Server Process 0:0:0 (0x1670) Arbejder 0x0000000004EDE160 ser ud til at være ikke-afkastning på Scheduler 5. Oprettelsestid for tråd: 13014210386757. Ca. anvendt tråd-CPU: kerne 0 ms, bruger 70106 ms. Procesudnyttelse 16 %. Systemet er inaktivt 77 %. Interval: 70140 ms.<Dato><klokkeslæt> Server Process 0:0:0 (0x1670) Arbejder 0x0000000004EDE160 ser ud til at være ikke-afkastning på Scheduler 5. Oprettelsestid for tråd:
Årsag
Dette problem opstår på grund af en fejl i SQL Server 2012 Database Engine. Tekstkolonnerne i TVP'en implementeres som indsættelsesstrenge eller buffere, og en stigning i antallet af rækker øger antallet af buffere. Processen, der frigiver buffere, er dog tidskrævende. Der genereres derfor en ikke-afkastende planlæggerfejl, når der udføres udgivelses- og formindskelseshandlinger. Bemærk! Der er løst et lignende problem i følgende artikel i Microsoft Knowledge Base. Men den samlede opdateringspakke, der beskrives i artiklen, er ikke et problem med timeout for forespørgsler.
2520808 RETTELSE: Fejl, der ikke vises, når du kører en forespørgsel, der bruger en TVP i SQL Server 2008 eller i SQL Server 2008 R2, hvis SQL Profiler eller SQL Server udvidede hændelser bruges
Løsning
Oplysninger om samlet opdatering
Samlet opdateringspakke 5 til SQL Server 2012 Service Pack 1 (SP1)
Rettelsen til dette problem blev først udgivet i Samlet opdatering 5. Du kan finde flere oplysninger om, hvordan du får denne samlede opdateringspakke til SQL Server 2012, ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:
2861107 Samlet opdateringspakke 5 til SQL Server 2012Note Da builds er kumulative, indeholder hver ny rettelse alle hotfixes og alle de sikkerhedsrettelser, der fulgte med den tidligere rettelse til SQL Server 2012. Vi anbefaler, at du overvejer at anvende den nyeste rettelse, der indeholder dette hotfix. Få flere oplysninger ved at klikke på følgende artikelnummer for at få vist artiklen i Microsoft Knowledge Base:
2772858 De SQL Server 2012-builds, der blev udgivet efter SQL Server 2012 Service Pack 1 blev udgivet
Løsning
Du kan løse dette problem med en af følgende metoder:
-
Brug ikke SQL Profiler eller SQL Server udvidede hændelser.
-
Klik for at fjerne markeringen i afkrydsningsfelterne RPC:Starting og RPC:Completed i sporingsdefinitionen.
Status
Microsoft har bekræftet, at problemet findes i de Microsoft-produkter, der er angivet i afsnittet "Gælder for".