A Microsoft egyetlen letölthető fájlban terjeszti a Microsoft SQL Server 2012 javításait. Mivel a javítások összegzőek, minden új kiadás tartalmazza az összes gyorsjavítást és az előző SQL Server 2012-es frissítési kiadásban szereplő összes biztonsági frissítést.
Jelenségek
Vegye figyelembe a következő forgatókönyvet:
-
A Microsoft SQL Server 2012-ben egy táblaértékű paramétert (TVP) használó tárolt eljárást hoz létre.
-
Az RPC:Starting és az RPC:Completed események rögzítéséhez SQL Profiler vagy SQL Server Bővített eseményeket használhat.
-
A TVP-t használó lekérdezést futtat.
-
A lekérdezés túllépi az időkorlátot.
Ebben a forgatókönyvben nem eredményező ütemezőhiba lép fel, és az ugyanazon az ütemezőn futó lekérdezések lassan futnak. Emellett egy mini memóriaképfájl is létre lesz hozva a SQL Server naplómappában.Ha ez a probléma jelentkezik, a következőhöz hasonló hibaüzenet jelenik meg:
System.Data.SqlClient.SqlException (0x80131904): Az időtúllépés lejárt. A művelet befejezése előtt eltelt időtúllépési időszak, vagy a kiszolgáló nem válaszol.at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 hiba)at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()a 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)at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)at 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, Boolean sendToPipe)at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()at TVPApp.Program.Main(String[] args)
A nem eredményező ütemező hibát és az alábbihoz hasonló hibaüzenetet naplózza a rendszer a SQL Server hibanaplóban:
<Dátum><idő> kiszolgáló a "4.0.5 " dbghelp.dll verziót használó<Dátum><idő> server ***Nem sikerült lekérni a hozzászóláslánc-környezetet a következőhöz: spid #<Date><Time> Server * *******************************************************************************><2><dátum-><idő> kiszolgáló *><6 dátum><idő> server * BEGIN STACK MEMÓRIAKÉP:><0 dátum><idő> kiszolgáló * <dátum><idő> spid #><8 dátum><idő> kiszolgáló *><2 dátum-><idő> kiszolgáló * Nem hozamú ütemező><6 dátum><idő> kiszolgáló *<dátum><idő> kiszolgáló * *******************************************************************************<a memóriaképhez><> dátum><A kiszolgálói verem aláírása 0x000000000000002C<dátum><idő> server külső memóriakép folyamatának visszatérési kódja 0x20000001.A külső memóriakép-folyamat nem adott vissza hibát.<> Server Process 0:0:0 (0x1670) munkavégző 0x0000000004EDE160 dátum-><idő 0x0000000004EDE160 úgy tűnik, hogy a Scheduler 5 nem hoz eredményt. Szállétrehozás ideje: 13014210386757. Kb. Szál CPU-kihasználtság: kernel 0 ms, felhasználó 70106 ms. Folyamat kihasználtsága 16%. Rendszer tétlen 77%. Időköz: 70140 ms.<> Server Process 0:0:0 (0x1670) munkavégző 0x0000000004EDE160 dátum-><idő 0x0000000004EDE160 úgy tűnik, hogy a Scheduler 5 nem hoz eredményt. Szállétrehozás ideje:
A probléma oka
Ez a probléma a SQL Server 2012 adatbázismotor hibája miatt fordul elő. A TVP szöveges oszlopai beszúrási sztringekként vagy pufferként vannak implementálva, a sorok számának növekedése pedig növeli a pufferek számát. A puffereket felszabadító folyamat azonban időigényes. Ezért a kiadási és zsugorítási műveletek végrehajtásakor nem eredményező ütemezőhiba jön létre. Megjegyzés Hasonló problémát javítottunk a Microsoft Tudásbázis következő cikkében. A cikkben ismertetett kumulatív frissítési csomag azonban nem a lekérdezések időtúllépésével kapcsolatos probléma.
2520808 JAVÍTÁS: Nem eredményező ütemezőhiba, ha 2008-ban SQL Server 2008-ban vagy SQL Server 2008 R2-ben TVP-t használó lekérdezést futtat, ha SQL Profiler vagy SQL Server Bővített eseményeket használ
Megoldás
Kumulatív frissítési információk
5. kumulatív frissítési csomag a 2012. SQL Server 1. szervizcsomaghoz (SP1)
A probléma javítása először az 5. kumulatív frissítésben jelent meg. A SQL Server 2012 kumulatív frissítési csomagjának beszerzéséről a Microsoft Tudásbázis következő cikkében tájékozódhat:
2861107 5. összegző frissítési csomag a SQL Server 2012-hözMegjegyzés Mivel a buildek összegzőek, minden új javításkiadás tartalmazza az összes gyorsjavítást és az előző SQL Server 2012-es javítás kiadásában szereplő összes biztonsági javítást. Javasoljuk, hogy fontolja meg a gyorsjavítást tartalmazó legújabb javítás kiadásának alkalmazását. További információ a Microsoft Tudásbázis következő számú cikkében olvasható (a cikk megnyitásához kattintson a sorszámra):
2772858 A 2012-SQL Server 2012 Service Pack 1 kiadását követően kiadott SQL Server 2012-ben kiadott buildek
Áthidaló megoldás
A következő módszerek valamelyikével áthidalhatja ezt a problémát.
-
Ne használjon SQL Profilert vagy SQL Server Bővített eseményeket.
-
Kattintson ide az RPC:Indítás és az RPC:Befejezett jelölőnégyzetek törléséhez a nyomkövetési definícióban.
Állapot
A Microsoft megerősítette, hogy ez a probléma „A következőkre vonatkozik:” részben felsorolt Microsoft-termékekre vonatkozik.