FIX: Deadlock pu˛ verificarsi quando vengono generate pi¨ sottoscrizioni di notifica di query concorrenti sugli stessi oggetti in SQL Server 2005 o in SQL Server 2008

Traduzione articoli Traduzione articoli
Identificativo articolo: 975090 - Visualizza i prodotti a cui si riferisce l?articolo.
Microsoft distribuisce le correzioni di Microsoft SQL Server 2005 come un unico file scaricabile. PoichÚ le correzioni sono cumulative, ogni nuova versione contiene tutte le correzioni rapide e rilascio di correggere tutte le correzioni di protezione che erano incluse nelle precedenti SQL Server 2005.Microsoft distribuisce le correzioni di Microsoft SQL Server 2008 come un unico file scaricabile. PoichÚ le correzioni sono cumulative, ogni nuova versione contiene tutte le correzioni rapide e rilascio di correggere tutte le correzioni di protezione che erano incluse nelle precedenti SQL Server 2008.
Espandi tutto | Chiudi tutto

Sintomi

Si consideri lo scenario seguente:
  • In Microsoft SQL Server 2005 o Microsoft SQL Server 2008, Ŕ possibile impostare i pi¨ sottoscrizioni di notifica di query su alcune tabelle.
  • Aggiornare queste tabelle.
  • Le richieste per le sottoscrizioni di notifica di query vengono attivate contemporaneamente.
In questo scenario pu˛ verificarsi blocchi critici (deadlock) sulle tabelle di sistema di notifica di query (ad esempio, una tabella di sistema con un nome somigliante sys.query_notification_xxxxxx). Inoltre, nel file di registro degli errore di SQL Server viene registrato il seguente grafico di blocco critico (deadlock):
id cameriere = modalitÓ process7f8dc48 = requestType U = attendere,
elenco di cameriere
id del proprietario = modalitÓ process873ce38 = U,
elenco di proprietari
keylock hobtid = 72057594049462272 dbid = nomeoggetto 5 = <database>. sys.query_notification_626101271 NomeIndice = id cidx = lock178dd6c0
modalitÓ = associatedObjectId U = 72057594049462272,
id cameriere = modalitÓ process873ce38 = requestType U = attendere,
elenco di cameriere
id del proprietario = modalitÓ process7f8dc48 = U,
elenco di proprietari
keylock hobtid = 72057594049462272 dbid = nomeoggetto 5 = <database>. sys.query_notification_626101271 NomeIndice = id cidx = lock176848c0
modalitÓ = associatedObjectId U = 72057594049462272,
elenco di risorse
<query>,
inputbuf,
<query>,
cornice procname = ad hoc riga = 1 sqlhandle = 0x020000009f5c4302918e8370f6d9bd71045a53f75b8056b3,
executionStack,
id processo = process873ce38 taskpriority = 0 logused = 0 waitresource = KEY: waittime 5:72057594049462272 (0e0086ec58d5) = 4984 ownerId = transactionname 574444809 = CQueryScan::BeginNotifXact lasttranstarted = <Date><tempo>XDES = 0x732047f8 lockMode = schedulerid U = 7 kpid = 8068 status = sospeso spid = 133 sbid = 0 ecid = prioritÓ 0 = 0 transcount = 0 lastbatchstarted = <Date><tempo>lastbatchcompleted = <Date><tempo>clientapp = .NET nomehost SqlClient Data Provider = <nomehost>hostpid = loginname 1824 = <loginname>isolationlevel = lettura commit xactid (2) = currentdb 574444808 = 5 lockTimeout = 4294967295 clientoption1 = clientoption2 671088672 = 128056,
<query>,
inputbuf,
<query>,
cornice procname = ad hoc riga = 1 sqlhandle = 0x020000009f5c4302918e8370f6d9bd71045a53f75b8056b3,
executionStack,
id processo = process7f8dc48 taskpriority = 0 logused = 0 waitresource = KEY: waittime 5:72057594049462272 (0d006843edc7) = 4984 ownerId = transactionname 574444769 = CQueryScan::BeginNotifXact lasttranstarted = <Date><tempo>XDES = 0x6adc9528 lockMode = schedulerid U = 5 kpid = 676 status = sospeso spid = 293 sbid = 0 ecid = prioritÓ 0 = 0 transcount = 0 lastbatchstarted = <Date><tempo>lastbatchcompleted = <Date><tempo>clientapp = .NET nomehost SqlClient Data Provider = <nomehost>110 hostpid = loginname 1272 = isolationlevel <loginname>= lettura commit xactid (2) = currentdb 574444768 = 5 lockTimeout = 4294967295 clientoption1 = clientoption2 671088672 = 128056,
elenco di processi
vittima del deadlock = process873ce38,
elenco di blocco critico (deadlock)

Cause

Per impostazione predefinita, SQL Server utilizza il livello di isolamento della transazione READ_COMMITTED. Pertanto, delle query interne di SQL Server dispone potenzialmente in grado di eseguire in blocchi critici (deadlock). Nello scenario descritto nella sezione "Sintomi", le query che causano il blocco critico (deadlock) sono delle query interne.

Risoluzione

SQL Server 2005 Service Pack 3

Innanzitutto, la correzione di questo problema Ŕ stata rilasciata nell'aggiornamento cumulativo 6 per SQL Server 2005 Service Pack 3. Per ulteriori informazioni su questo pacchetto di aggiornamento cumulativo, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
974648Pacchetto di aggiornamento cumulativo 6 per SQL Server 2005 Service Pack 3
Nota PoichÚ le generazioni sono cumulative, ogni nuova versione di correzione contiene tutti gli aggiornamenti rapidi e rilascio di correggere tutte le correzioni di protezione che erano incluse nelle precedenti SQL Server 2005. Si consiglia di considerare l'applicazione alla versione pi¨ recente di correzione che contiene questo aggiornamento rapido (hotfix). Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
960598Versioni di SQL Server 2005 rilasciate dopo il rilascio di SQL Server 2005 Service Pack 3
Microsoft SQL Server 2005 gli hotfix vengono creati per specifici i service pack di SQL Server. ╚ necessario applicare un hotfix di SQL Server 2005 Service Pack 3 per un'installazione di SQL Server 2005 Service Pack 3. Per impostazione predefinita, qualsiasi hotfix fornito in un service pack di SQL Server Ŕ incluso nel successivo service pack di SQL Server.

La versione finale di SQL Server 2008

Importante Se si esegue la versione finale di SQL Server 2008, Ŕ necessario installare questa correzione.

La correzione di questo problema Ŕ stato rilasciato per la prima volta nel 8 aggiornamento cumulativo. Per ulteriori informazioni su come ottenere questo pacchetto di aggiornamento cumulativo per SQL Server 2008, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
975976Pacchetto di aggiornamento cumulativo 8 per SQL Server 2008
Nota PoichÚ le generazioni sono cumulative, ogni nuova versione di correzione contiene tutti gli aggiornamenti rapidi e rilascio di correggere tutte le correzioni di protezione che erano incluse nelle precedenti SQL Server 2008. Si consiglia di considerare l'applicazione alla versione pi¨ recente di correzione che contiene questo aggiornamento rapido (hotfix). Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
956909Versioni di SQL Server 2008 rilasciate dopo il rilascio di SQL Server 2008

SQL Server 2008 Service Pack 1

Importante Se si esegue SQL Server 2008 Service Pack 1, Ŕ necessario installare questa correzione.

La correzione di questo problema Ŕ stato rilasciato per la prima volta nel 5 di aggiornamento cumulativo per SQL Server 2008 Service Pack 1. Per ulteriori informazioni su questo pacchetto di aggiornamento cumulativo, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
9759775 Pacchetto di aggiornamento cumulativo per SQL Server 2008 Service Pack 1
Nota PoichÚ le generazioni sono cumulative, ogni nuova versione di correzione contiene tutti gli aggiornamenti rapidi e rilascio di correggere tutte le correzioni di protezione che erano incluse nelle precedenti SQL Server 2008. Si consiglia di considerare l'applicazione alla versione pi¨ recente di correzione che contiene questo aggiornamento rapido (hotfix). Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
970365Versioni di SQL Server 2008 rilasciate dopo il rilascio di SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008 aggiornamenti rapidi vengono creati per specifici i service pack di SQL Server. ╚ necessario applicare un hotfix di SQL Server 2008 Service Pack 1 per un'installazione di SQL Server 2008 Service Pack 1. Per impostazione predefinita, qualsiasi hotfix fornito in un service pack di SQL Server Ŕ incluso nel successivo service pack di SQL Server.

Dopo avere applicato questa correzione, verrÓ essere impostato il livello di isolamento Serializable quando il modulo di gestione di database accede alle tabelle di sistema.

Status

Microsoft ha confermato che si tratta di un problema con i prodotti elencati nella sezione "Si applica a".

Informazioni

In base a causa di questo problema, il metodo tipico di regolazione e di indicizzazione non Ŕ in grado di risolvere questo problema. L'aggiornamento rapido (hotfix) viene utilizzato per modificare temporaneamente il livello di isolamento da un livello superiore per una determinata parte di questa transazione per assicurarsi che non Ŕ possibile eseguire le query problematiche in blocco critico (deadlock).

Riferimenti

Per ulteriori informazioni su modello di manutenzione incrementale per SQL Server, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
935897Un modello di manutenzione incrementale Ŕ disponibile dal team di SQL Server per recapitare gli aggiornamenti rapidi per i problemi segnalati
Per ulteriori informazioni su come ottenere SQL Server 2005 Service Pack 3, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
913089Come ottenere il service pack pi¨ recente per SQL Server 2005
Per ulteriori informazioni sulle nuove funzionalitÓ di SQL Server 2005 Service Pack 3 (SP3) e sui miglioramenti apportati in SQL Server 2005 SP3, visitare il seguente sito Web Microsoft:
http://go.microsoft.com/fwlink/?LinkId=131442
Per ulteriori informazioni su schema di denominazione degli aggiornamenti di SQL Server, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
822499Nuovo schema di denominazione per i pacchetti di aggiornamento software di Microsoft SQL Server
Per ulteriori informazioni sulla terminologia di aggiornamento software, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
824684Descrizione della terminologia standard utilizzata per descrivere gli aggiornamenti software Microsoft

ProprietÓ

Identificativo articolo: 975090 - Ultima modifica: lunedý 19 ottobre 2009 - Revisione: 1.1
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
Chiavi:á
kbmt kbexpertiseadvanced kbsurveynew kbqfe kbfix KB975090 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 975090
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com