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

Chyba č: 187868 (Údržba obsahu)VSTS: 1340145

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

Příznaky

Jde o takovouto situaci:

  • Vytvoření uložené procedury, která používá parametr založené na hodnotách tabulky (TVP) v Microsoft SQL Server 2012.

  • Použít SQL Profiler nebo SQL Server Extended událostí k zachycení RPC: spouštění a RPC: dokončení události.

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

  • Časový limit dotazu vypršel.

V tomto případě dojde k chybě s bez získávání Plánovač a dotazy, které jsou spuštěny na stejném Plánovač běží pomalu. Kromě toho zkrácené dump soubor je generován ve složce protokolu serveru SQL Server.Když nastane tento problém, zobrazí se chybová zpráva podobná následující:

System.Data.SqlClient.SqlException (0x80131904): Vypršel časový limit. Časový limit vypršel před dokončením operace nebo server neodpovídá.v System.Data.SqlClient.SqlInternalConnection.OnError (SqlException výjimku, Boolean breakConnection)v System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()v System.Data.SqlClient.TdsParserStateObject.ReadSniError (TdsParserStateObject stateObj, chyby UInt32)v System.Data.SqlClient.TdsParserStateObject.ReadSni (DbAsyncResult asyncResult, TdsParserStateObject stateObj)v System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()v System.Data.SqlClient.TdsParserStateObject.ReadByte()v System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader datový proud, BulkCopySimpleResultSet, bulkCopyHandler, TdsParserStateObject stateObj)v System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior, runBehavior, řetězec resetOptionsString)v System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, logické asynchronní)na System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, metoda řetězec, výsledek DbAsyncResult)v System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (DbAsyncResult výsledek, řetězec methodName, Boolean sendToPipe)v System.Data.SqlClient.SqlCommand.ExecuteNonQuery()v TVPApp.Program.Main (String [] args)

Získávání Plánovač chyba a chybová zpráva podobná následující je zaznamenána v protokolu chyb serveru SQL Server:

> Server pomocí 'dbghelp.dll' verze '4.0.5' < datum ><< Datum >< čas > Server *** nelze získat kontext podprocesu spid #<Date><Time> Server * *******************************************************************************Server < datum >< čas > *< Datum >< čas > Server * BEGIN výpis zásobníku:Server < datum >< čas > * < datum >< čas > spid #Server < datum >< čas > *< Datum >< čas > Server * Non získávání PlánovačServer < datum >< čas > *<Date><Time> Server * *******************************************************************************< Datum >< čas > Server zásobníku podpis pro výpis stavu je 0x000000000000002C< Datum >< čas > Server externí výpis procesu vrátit kód 0x20000001.Externí výpis stavu procesu vráceny žádné chyby.Proces serveru < datum >< čas > 0:0:0 (0x1670) pracovník 0x0000000004EDE160 se zdá být non získávání Plánovač 5. Čas vytvoření podprocesu: 13014210386757. Použité cca podprocesu procesoru: jádro 0 ms, uživatel 70106 ms. proces využití 16 %. Systém nečinnosti 77 %. Interval: 70140 ms.Proces serveru < datum >< čas > 0:0:0 (0x1670) pracovník 0x0000000004EDE160 se zdá být non získávání Plánovač 5. Čas vytvoření podprocesu:

Příčina

K tomuto problému dochází z důvodu chyby v SQL Server 2012 databázový stroj. Sloupce textu 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 uvolnění vyrovnávací paměti je však časově náročné. Proto je generován chybu non získávání Plánovač při uvolnění a zmenšit operace dojít.Poznámka: Podobný problém byl řešen v následujícím článku znalostní báze Microsoft Knowledge base. Nicméně balíček kumulativní aktualizace, která je popsána v článku není pro chybu vypršení časového limitu dotazu.

2520808 oprava: Non získávání Plánovač při spuštění dotazu, který používá TVP v SQL Server 2008 nebo SQL Server 2008 R2, pokud používá SQL Profiler nebo SQL Server Extended události

Řešení

Informace o kumulativní aktualizaci

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

Oprava tohoto problému byla vydána nejprve v kumulativní aktualizaci 5. Další informace o možnostech získání tohoto balíčku kumulativní aktualizace pro SQL Server 2012 získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

2861107 kumulativní aktualizace balíčku 5 pro SQL Server 2012Poznámka: Vzhledem k tomu, sestavení jsou kumulativní, každá nová verze oprava obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozích SQL Server 2012 verzí oprav. Doporučujeme zvážit použití nejnovější vydání oprava, která obsahuje tuto opravu hotfix. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

2772858 SQL Server 2012 vytvoří, které byly vydány po vydání aktualizace Service Pack 1 pro SQL Server 2012

Jak potíže obejít

Chcete-li tento problém vyřešit, použijte jednu z následujících metod:

  • Nepoužívejte SQL Profiler nebo SQL Server Extended události.

  • Zrušte zaškrtnutí políčka RPC: počáteční a RPC: dokončení zaškrtávací políčka v definici trasování.

Další informace

Tato oprava se nevztahuje na SQL Server 2008 nebo SQL Server 2008 R2, při publikování této KB. Pokud uživatelé dojde ke stejnému problému v SQL Server 2008 nebo SQL Server 2008 R2, i po použití balíčku, která je popsána v následujícím článku znalostní báze, ověření, zda je časový limit dotazu a určit, zda časový limit je možné vyřešit. Jinak odešlete žádost o instalaci této opravy pro SQL Server 2008 nebo SQL Server 2008 R2.

2520808 oprava: Non získávání Plánovač při spuštění dotazu, který používá TVP v SQL Server 2008 nebo SQL Server 2008 R2, pokud používá SQL Profiler nebo SQL Server Extended události

Informace v zásobníku volání

sqlmin!CLinkedMap<__int64,CCheckReadersAndWriters::CCounts>::FLookup+0x29sqlmin!CCheckReadersAndWriters::Release+0x69sqlmin!CMainIlb::{dtor}+0x3dsqlmin!CMainIlb::`scalar deleting destructor'+0x3dsqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13sqlmin!CMainIlb::Release+0xf0sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80sqllang!CTraceTvpData::{dtor}+0x14sqllang!CTraceTvpData::`scalar deleting destructor'+0x1esqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x33sqllang!CRpcTraceHelper::~CRpcTraceHelper+0x70sqllang!CRPCExecEnv::~CRPCExecEnv+0x2absqllang!CRPCExecEnv::`scalar deleting destructor'+0x14sqllang!process_request+0x10b1sqllang!process_commands+0x51csqldk!SOS_Task::Param::Execute+0x21esqldk!SOS_Scheduler::RunTask+0xa8sqldk!SOS_Scheduler::ProcessTasks+0x299sqldk!SchedulerManager::WorkerEntryPoint+0x261sqldk!SystemThread::RunWorker+0x8fsqldk!SystemThreadDispatcher::ProcessWorker+0x3c8sqldk!SchedulerManager::ThreadEntryPoint+0x236kernel32!BaseThreadInitThunk+0xdntdll!RtlUserThreadStart+0x1d  
sqlmin!CLinkedMap<__int64,CCheckReadersAndWriters::CCounts>::FDelete+0x34sqlmin!CCheckReadersAndWriters::Release+0xfbsqlmin!CMainIlb::{dtor}+0x3dsqlmin!CMainIlb::`scalar deleting destructor'+0x3dsqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13sqlmin!CMainIlb::Release+0xf0sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80sqllang!CTraceTvpData::{dtor}+0x11sqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x55sqllang!CRpcTraceHelper::TracePostExec+0x1bfsqllang!CRPCExecEnv::OnExecFinish+0xaasqllang!CProtocolHeaderInfo::{dtor}+0xffffffff`ffb158e2sqllang!process_request+0x764sqllang!process_commands+0x51csqldk!SOS_Task::Param::Execute+0x21esqldk!SOS_Scheduler::RunTask+0xa8sqldk!SOS_Scheduler::ProcessTasks+0x29asqldk!SchedulerManager::WorkerEntryPoint+0x261sqldk!SystemThread::RunWorker+0x8fsqldk!SystemThreadDispatcher::ProcessWorker+0x3c8sqldk!SchedulerManager::ThreadEntryPoint+0x236kernel32!BaseThreadInitThunk+0x1antdll!RtlUserThreadStart+0x1d 

Stav

Společnost Microsoft potvrdila, že se jedná o problém v produktech společnosti Microsoft, které jsou uvedeny v části "Platí pro".

Author: jannawWriter: v-yipliOdborný recenzent: pradm; jannaw; hozhanEditor: v-mordew

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.