Accedi con Microsoft
Accedi o crea un account.
Salve,
Seleziona un altro account.
Hai più account
Scegli l'account con cui vuoi accedere.

Microsoft distribuisce le correzioni di Microsoft SQL Server 2008 R2 in un unico file scaricabile. Poiché le correzioni sono cumulative, ogni nuova versione contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nella versione precedente di SQL Server 2008 R2 Fix.

Sintomi

Considerare lo scenario descritto di seguito:

  • Un'applicazione esegue una query che fa riferimento a alcune tabelle temporanee in Microsoft SQL Server 2008 e in Microsoft SQL Server 2008 R2. Le tabelle temporanee vengono create in una sessione anziché in una stored procedure.

  • Il piano di query viene memorizzato nella cache.

  • Molti utenti eseguono la stessa query in un ambiente altamente simultaneo. Ad esempio, molti utenti usano un'applicazione che esegue la query seguente:

    create table #x (col1 int) go insert into #x values (1) go select * from #x where col1 = 1 go

In questo scenario, l'applicazione incontra i problemi di prestazioni.Nota Per altre informazioni su come identificare questo problema, vedere la sezione "altre informazioni".

Causa

Questo problema si verifica perché gli stessi piani di query vengono inseriti nella cache nello stesso bucket hash per ogni utente quando il testo della query è lo stesso. Quando viene eseguito l'hashing di un numero elevato di piani nello stesso bucket (noto anche come catena hash), il tempo necessario per cercare un piano nella cache aumenta in modo significativo e i problemi di prestazioni possono verificarsi. Inoltre, i thread di lavoro possono riscontrare una grave contesa di spinlock e altri thread sono interessati quando questi thread di lavoro non eseguono i rendimenti corretti per l'utilità di pianificazione.

Risoluzione

Nota Solo l'aggiornamento per SQL Server 2008 R2 è attualmente disponibile. Per SQL Server 2008, vedere la sezione "soluzione alternativa" per risolvere il problema.

Informazioni sull'aggiornamento cumulativo

SQL Server 2008 R2 Service Pack 1

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

2544793 Pacchetto di aggiornamento cumulativo 1 per SQL Server 2008 R2 Service Pack 1Nota Poiché le build sono cumulative, ogni nuova versione di correzione contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nella versione precedente di SQL Server 2008 R2 Fix. Ti consigliamo di considerare l'applicazione della versione di correzione più recente che contiene questo hotfix. Per ulteriori informazioni, fare clic sul numero dell'articolo seguente per visualizzare l'articolo nella Microsoft Knowledge Base:

2567616 Le build di SQL Server 2008 R2 rilasciate dopo il rilascio di SQL Server 2008 R2 Service Pack 1

SQL Server 2008 R2

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

2507770 Pacchetto di aggiornamento cumulativo 7 per SQL Server 2008 R2 Nota Poiché le build sono cumulative, ogni nuova versione di correzione contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nella versione precedente di SQL Server 2008 R2 Fix. Ti consigliamo di considerare l'applicazione della versione di correzione più recente che contiene questo hotfix. Per ulteriori informazioni, fare clic sul numero dell'articolo seguente per visualizzare l'articolo nella Microsoft Knowledge Base:

981356 Build di SQL Server 2008 R2 rilasciate dopo il rilascio di SQL Server 2008 R2

Stato

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

Soluzione alternativa

Per risolvere il problema in SQL Server 2008 e in SQL Server 2008 R2, spostare i riferimenti delle tabelle temporanee all'interno delle stored procedure.

Ulteriori informazioni

Per altre informazioni su come creare e modificare le nozioni di base sulle tabelle, visitare il sito Web MSDN seguente:

Come creare e modificare le nozioni di base sulle tabelleLa contesa di SpinLock può essere identificata dalla vista a gestione dinamica sys.dm_os_spinlock_stats (DMV) con una percentuale di contesa elevata nell' SOS_CACHESTORE SpinLock. Per identificare il problema, eseguire una query simile alla seguente:

select cp.bucketid, count(cp.bucketid) as BucketCount, st.text from sys.dm_exec_cached_plans cp cross apply sys.dm_exec_sql_text(cp.plan_handle) as st group by cp.bucketid, st.text having count(cp.bucketid) >1 order by BucketCount descSe le condizioni seguenti sono vere quando si esegue la query, è possibile che si verifichino problemi di prestazioni:

  • Questa query genera lo stesso testo della query.

  • Il conteggio per lo stesso BucketID è di grandi dimensioni.Nota Un numero elevato per lo stesso BucketID è in genere superiore a 1000.

  • Le query fanno riferimento a tabelle temporanee

Serve aiuto?

Vuoi altre opzioni?

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

Le community aiutano a porre e a rispondere alle domande, a fornire feedback e ad ascoltare gli esperti con approfondite conoscenze.

Queste informazioni sono risultate utili?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?
Premendo Inviare, il tuo feedback verrà usato per migliorare i prodotti e i servizi Microsoft. L'amministratore IT potrà raccogliere questi dati. Informativa sulla privacy.

Grazie per il feedback!

×