Platí pro
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

Microsoft distribuuje opravy Microsoft SQL Server 2012 v jednom souboru ke stažení. Vzhledem k tomu, že opravy jsou kumulativní, obsahuje každá nová verze všechny opravy hotfix a všechny aktualizace zabezpečení, které byly součástí předchozí verze aktualizace SQL Server 2012.

Příznaky

Představte si následující scénář:

  • Vytvoříte uloženou proceduru, která používá parametr s hodnotou tabulky (TVP) v Microsoft SQL Server 2012.

  • K zaznamenání událostí RPC:Starting a RPC:Completed použijete SQL Profiler nebo SQL Server rozšířené události.

  • Spustíte dotaz, který používá program TVP.

  • Časový limit dotazu vyprší.

V tomto scénáři dojde k chybě plánovače, který se nedává, a dotazy spuštěné ve stejném plánovači běží pomalu. Kromě toho se ve složce protokolu SQL Server vygeneruje soubor s minimálním výpisem paměti.Když dojde k tomuto problému, zobrazí se chybová zpráva podobná následující:

System.Data.SqlClient.SqlException (0x80131904): Vypršel časový limit. Časový limit uplynul před dokončením operace nebo server nereaguje.at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, Chyba UInt32)at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()v System.Data.SqlClient.TdsParserStateObject.ReadByte()ve společnosti 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)v System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)v System.Data.SqlClient.SqlCommand.ExecuteNonQuery()at TVPApp.Program.Main(String[] args)

Do protokolu chyb SQL Server se zaprotokoluje chyba nevýznamného plánovače spolu s chybovou zprávou, která se podobá následující:

<datum><čas> server pomocí dbghelp.dll verze 4.0.5<datum><čas> server ***Nelze získat kontext vlákna pro spid #<datum><čas> server * *******************************************************************************><2 ******************************************************************************* datum><čas> server *><6 datum><čas> server * BEGIN STACK DUMP:><0 datum><čas> server * <datum><čas> spid #><8 datum><čas> server *><2 Date><Time> Server * Non-yielding Scheduler><6 Date><Time> Server *<Date><Time> Server * *******************************************************************************<Date><Time> Server Stack Signature for the dump je 0x000000000000002C<date><Time> Server External dump process return code 0x20000001.Proces externího výpisu paměti nevrátil žádné chyby.<Datum><čas> Server Process 0:0:0 (0x1670) Pracovní 0x0000000004EDE160 se v Plánovači 5 zdá být neprodukující. Čas vytvoření vlákna: 13014210386757. Přibližné využití procesoru vlákna: jádro 0 ms, uživatel 70106 ms. Využití procesu 16 %. Nečinný systém 77 %. Interval: 70140 ms.<Datum><čas> Server Process 0:0:0 (0x1670) Pracovní 0x0000000004EDE160 se v Plánovači 5 zdá být neprodukující. Čas vytvoření vlákna:

Příčina

K tomuto problému dochází z důvodu chyby v databázovém stroji SQL Server 2012. Textové sloupce v TVP jsou implementovány jako vložené řetězce nebo vyrovnávací paměti a zvýšení počtu řádků zvyšuje počet vyrovnávacích pamětí. Proces, který uvolní vyrovnávací paměti, je ale časově náročný. Proto se při operacích uvolnění a zmenšení vygeneruje chyba negenerujícího plánovače. Poznámka: Podobný problém byl vyřešen v následujícím článku znalostní báze Microsoft Knowledge Base. Balíček kumulativní aktualizace, který je popsán v článku, se však nevztahuje na problém s vypršením časového limitu dotazu.

2520808 Oprava: Nevolící chyba plánovače při spuštění dotazu, který používá PROGRAM TVP v SQL Server 2008 nebo v SQL Server 2008 R2 pokud sql Profiler nebo SQL Server rozšířené události je použit

Řešení

Informace o kumulativní aktualizaci

Balíček kumulativní aktualizace 5 pro SQL Server 2012 Service Pack 1 (SP1)

Oprava tohoto problému byla poprvé vydána v kumulativní aktualizaci 5. Další informace o tom, jak získat tento balíček kumulativní aktualizace pro SQL Server 2012 získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

2861107 Balíček kumulativní aktualizace 5 pro SQL Server 2012Note Vzhledem k tomu, že buildy jsou kumulativní, obsahuje každá nová verze oprav všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí verze opravy SQL Server 2012. Doporučujeme zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

2772858 Buildy SQL Server 2012 vydané po vydání aktualizace Service Pack 1 SQL Server 2012

Alternativní řešení

Jako alternativní řešení použijte jednu z následujících metod:

  • Nepoužívejte SQL Profiler ani SQL Server rozšířených událostí.

  • Kliknutím zrušte zaškrtnutí políček RPC:Starting a RPC:Completed v definici trasování.

Stav

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.