Si applica a
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

Microsoft distribuisce le correzioni di Microsoft SQL Server 2012 in un unico file scaricabile. Poiché le correzioni sono cumulative, ogni nuova versione contiene tutti gli aggiornamenti rapidi e tutti gli aggiornamenti della sicurezza inclusi nell'aggiornamento precedente SQL Server 2012.

Sintomi

Considerare lo scenario descritto di seguito:

  • È possibile creare una stored procedure che usa un parametro con valori di tabella (TVP) in Microsoft SQL Server 2012.

  • Per acquisire gli eventi RPC:Starting e RPC:Completed si utilizza SQL Profiler o SQL Server Extended Events.

  • Eseguire una query che usa il programma TVP.

  • Timeout della query.

In questo scenario si verifica un errore di utilità di pianificazione senza rendimento e le query eseguite nello stesso utilità di pianificazione sono lente. Inoltre, nella cartella del log SQL Server viene generato un file di mini dump.Quando si verifica questo problema, viene visualizzato un messaggio di errore simile al seguente:

System.Data.SqlClient.SqlException (0x80131904): timeout scaduto. Il periodo di timeout trascorso prima del completamento dell'operazione o il server non risponde.in System.Data.SqlClient.SqlInternalConnection.OnError(eccezione SqlException, Boolean breakConnection)at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()in 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)in 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)in System.Data.SqlClient.SqlCommand.ExecuteNonQuery()at TVPApp.Program.Main(String[] args)

L'errore dell'utilità di pianificazione senza rendimento insieme a un messaggio di errore simile al seguente viene registrato nel log degli errori di SQL Server:

server> data><<con la versione "dbghelp.dll" "4.0.5"<server> data><ora .non è possibile ottenere il contesto di thread per il server> data><data<********************************************************************************><2 Server> data><><* server><6 data><ora> * DUMP DELLO STACK DI INIZIO: server> data><><0 * <data><ora> spid #><8 data><ora> server *><2 server data><ora> * Server di><6 Data><Ora> ******************************************************************************* Server *<Data><Ora> Server * *******************************************************************************<data><ora> firma dello stack di server per il dump viene 0x000000000000002C 0x20000001 codice restituito di processo dump esterno data><ora<data> server esterno.Il processo di dump esterno non ha restituito errori.<data><ora> processo server 0:0:0 (0x1670) 0x0000000004EDE160 di lavoro sembra non cedere in Scheduler 5. Tempo di creazione del thread: 13014210386757. CPU thread approssimativa Utilizzata: kernel 0 ms, utente 70106 ms. Utilizzo processo 16%. Inattività sistema 77%. Intervallo: 70140 ms.<data><ora> processo server 0:0:0 (0x1670) 0x0000000004EDE160 di lavoro sembra non cedere in Scheduler 5. Ora di creazione del thread:

Causa

Questo problema si verifica a causa di un errore nel motore di database di SQL Server 2012. Le colonne di testo in TVP vengono implementate come stringhe di inserimento o buffer e un aumento del numero di righe aumenta il numero di buffer. Tuttavia, il processo che rilascia i buffer richiede tempo. Di conseguenza, viene generato un errore di utilità di pianificazione senza rendimento quando si verificano operazioni di rilascio e riduzione. Nota Un problema simile è stato risolto nel seguente articolo della Microsoft Knowledge Base. Tuttavia, il pacchetto di aggiornamento cumulativo descritto nell'articolo non riguarda un problema di timeout della query.

2520808 CORREZIONE: errore dell'utilità di pianificazione non yielding quando si esegue una query che usa una TVP in SQL Server 2008 o in SQL Server 2008 R2 se viene usato SQL Profiler o SQL Server Extended Events

Risoluzione

Informazioni sugli aggiornamenti cumulativi

Pacchetto di aggiornamento cumulativo 5 per SQL Server 2012 Service Pack 1 (SP1)

La correzione di questo problema è stata rilasciata per la prima volta nell'aggiornamento cumulativo 5. Per altre informazioni su come ottenere questo pacchetto di aggiornamento cumulativo per SQL Server 2012, fare clic sul numero dell'articolo seguente per visualizzare l'articolo della Microsoft Knowledge Base:

2861107 Pacchetto di aggiornamento cumulativo 5 per SQL Server 2012Note Poiché le build sono cumulative, ogni nuova versione di correzione contiene tutti gli aggiornamenti rapidi e tutte le correzioni per la sicurezza inclusi nella versione precedente delle correzioni di SQL Server 2012. È consigliabile applicare la versione più recente di correzione che contiene questo hotfix. Per ulteriori informazioni, fare clic sul numero dell'articolo seguente per visualizzare l'articolo nella Microsoft Knowledge Base:

2772858 Build SQL Server 2012 rilasciate dopo il rilascio di SQL Server 2012 Service Pack 1

Soluzione alternativa

Per ovviare a questo problema, utilizzare uno dei seguenti metodi:

  • Non usare SQL Profiler o SQL Server gli eventi estesi.

  • Fare clic per deselezionare le caselle di controllo RPC:Avvio e RPC:Completato nella definizione di traccia.

Stato

Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".

Serve aiuto?

Vuoi altre opzioni?

Esplorare i vantaggi dell'abbonamento e i corsi di formazione, scoprire come proteggere il dispositivo e molto altro ancora.