BUG #: 187868 (turinio priežiūra)VSTS: 1340145

"Microsoft" išleidžia Microsoft SQL Server 2012 nustato vieną atsisiunčiamą failą. Kadangi šie pataisymai yra kaupiamieji, kiekvienoje laidoje būna visos karštosios pataisos ir saugos naujinimus, kurios buvo įtrauktos į ankstesnę SQL Server 2012 naujinimo išleidimo.

Požymiai

Įsivaizduokite tokią situaciją:

  • Galite sukurti Išsaugota procedūra, kuri naudoja lentelės reikšmių parametro (TVP) "Microsoft SQL Server 2012".

  • Naudojate SQL Profiler "arba" SQL Server Išplėstinis įvykiai užfiksuoti ir RPC: pradedant ir RPC: baigtas įvykiai.

  • Paleidus užklausą, kuri naudoja toliau TVP.

  • Užklausos laikas baigėsi.

Tokiu atveju Nekaupiamosios planavimo klaida įvyksta ir užklausos, kurios veikia patį planavimo veikti lėtai. Be to, mini dump failas yra sukurtas SQL serverio žurnalo aplanke.Iškilus šiai problemai, galite gauti klaidos pranešimą, panašų į šį:

System.Data.SqlClient.SqlException (0x80131904): Skirtasis laikas baigėsi. Skirtasis laikas praėjo prieš užbaigiant operaciją arba serveris neatsako.į System.Data.SqlClient.SqlInternalConnection.OnError (SqlException išimtis, Boolean breakConnection)į System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()į System.Data.SqlClient.TdsParserStateObject.ReadSniError (TdsParserStateObject stateObj, UInt32 klaidos)į System.Data.SqlClient.TdsParserStateObject.ReadSni (DbAsyncResult asyncResult, TdsParserStateObject stateObj)į System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()į System.Data.SqlClient.TdsParserStateObject.ReadByte()į System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)į System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, eilutės resetOptionsString)į System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)į System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, eilutės metodas, DbAsyncResult rezultatas)į System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (DbAsyncResult rezultatas, eilutės methodName, Boolean sendToPipe)į System.data.SqlClient.SqlCommand.ExecuteNonQuery()į TVPApp.Program.Main (String [args)

SQL serverio klaidos žurnale užregistruojamas Nekaupiamosios planavimo klaida kartu su klaidos pranešimą, panašų į šį:

< Data >< laiko > serverio naudojant "dbghelp.dll" versija "4.0.5"< Data >< laiko > Server *** nepavyko gauti gijos kontekstą spid #<Date><Time> Server * *******************************************************************************< Data >< laiko > serverio *< Data >< laiko > serverio * Pradžia RIETUVĖS IŠKELTIS:< Data >< laiko > Server * < data >< laiko > spid #< Data >< laiko > serverio *< Data >< laiko > serverio * ne duoda planavimo priemonė< Data >< laiko > serverio *<Date><Time> Server * *******************************************************************************< Data >< laiko > serverio rietuvės parašo, kad iškelties yra 0x000000000000002C< Data >< laiko > Server išorinių iškelties procesas grąžinimo kodas 0x20000001.Išorės iškelties procesas grįžo be klaidų.< Data >< laiko > serverio procesas 0:0:0 (0x1670) darbuotojas 0x0000000004EDE160 atrodo, kad Nekaupiamosios planavimo 5. Thread laiką: 13014210386757. Apie Thread CPU naudojama: branduolio 0 ms, ms. vartotojo 70106 proceso sąnaudos 16 %. Sistemos laukimo 77 %. Intervalas: 70140 ms.< Data >< laiko > serverio procesas 0:0:0 (0x1670) darbuotojas 0x0000000004EDE160 atrodo, kad Nekaupiamosios planavimo 5. Thread laiką:

Priežastis

Ši problema kyla dėl klaidos SQL Server 2012 duomenų bazės modulis. Teksto stulpelių, kad TVP atliktų kaip įterpti eilutės arba buferio ir eilučių skaičius padidėja padidina buferių. Vis dėlto, laidas buferio procesas yra daug laiko. Todėl sukuriamas Nekaupiamosios planavimo klaida kai paleisti ir sumažinti operacijų kilti.Pastaba. Panaši problema yra išspręsta šiame "Microsoft" žinių bazės straipsnyje. Tačiau kaupiamojo naujinimo paketą, aprašytą šiame straipsnyje nėra užklausa skirtojo laiko problema.

2520808 nustatyti: Nekaupiamosios planavimo klaida, kai vykdote užklausą, kuri naudoja TVP, SQL Server 2008 "arba" SQL Server 2008 R2, jei naudojama SQL Profiler "arba" SQL Server Išplėstinis įvykiai

Sprendimas

Kaupiamojo naujinimo informacija

Kaupiamųjų naujinimų paketas 5 SQL Server 2012 1 pakeitimų paketas (SP1)

Ši problema buvo pirmą kartą buvo išleistas Kaupiamasis naujinimas 5. Jei norite gauti daugiau informacijos apie tai, kaip gauti šį kaupiamųjų naujinimų paketas "SQL Server 2012", spustelėkite toliau straipsnio numerį ir peržiūrėkite straipsnį Microsoft žinių bazėje:

2861107 kaupiamojo naujinimo paketo 5 "SQL Server 2012"Pastaba. Kadangi komponavimo versijos yra kaupiamosios, kiekvienoje pataisų laidoje būna visos karštosios ir visus saugos pataisas, kurios buvo įtrauktos į ankstesnę SQL Server 2012 pataisymų laidą. Rekomenduojame, kad manote, kad pritaikyti pačios naujausios pataisų laidos, kuriame bus šios karštosios pataisos. Norėdami gauti daugiau informacijos, spustelėkite toliau pateiktą straipsnio numerį ir peržiūrėkite „Microsoft Knowledge Base“ žinių bazės straipsnį:

2772858 the SQL Server 2012 komponavimo versijos, išleistos po to, kai buvo išleistas SQL Server 2012 1 pakeitimų paketas

Sprendimas

Norėdami išspręsti šią problemą, naudokite vieną iš toliau nurodytų būdų:

  • Negalima naudoti SQL Profiler "arba" SQL Server Išplėstinis įvykiai.

  • Spustelėkite Norėdami išvalyti, RPC: pradedant ir RPC: baigtas žymės langelius, esančius sekimo aprašą.

Daugiau informacijos

Šios pataisos netaikomas SQL Server 2008 "arba" SQL Server 2008 R2, kai yra paskelbta šiame žinių bazės. Jei visi vartotojai susiduria su ta pačia problema sistemoje "SQL Server 2008" arba "SQL Server 2008 R2 net tada, kai vartotojų taikykite paketą, aprašytą šiame straipsnyje, patikrinti, ar užklausos skirtasis laikas ir nustatyti, ar galima nustatyti skirtojo laiko. Kitu atveju pateikti prašymą taikyti šį pakeitimą į SQL Server 2008 "arba" SQL Server 2008 R2.

2520808 nustatyti: Nekaupiamosios planavimo klaida, kai vykdote užklausą, kuri naudoja TVP, SQL Server 2008 "arba" SQL Server 2008 R2, jei naudojama SQL Profiler "arba" SQL Server Išplėstinis įvykiai

Iškvietimų sąrašo informacija

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 

Būsena

„Microsoft“ patvirtino, kad tai yra „Microsoft“ produktų, išvardytų skyriuje „Taikoma“, problema.

Author: jannawWriter: v-yipliTechninis redaktorius: pradm; jannaw; hozhanEditor: v-mordew

Reikia daugiau pagalbos?

Norite daugiau parinkčių?

Sužinokite apie prenumeratos pranašumus, peržiūrėkite mokymo kursus, sužinokite, kaip apsaugoti savo įrenginį ir kt.

Bendruomenės padeda užduoti klausimus ir į juos atsakyti, pateikti atsiliepimų ir išgirsti iš ekspertų, turinčių daug žinių.