FIX: Query con livello di isolamento della transazione impostato su READ UNCOMMITTED esito errore 601

Traduzione articoli Traduzione articoli
Identificativo articolo: 815008 - Visualizza i prodotti a cui si riferisce l?articolo.
BUG #: 363988 (RIFERIMENTO)
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Quando una query viene eseguita con il livello di isolamento delle transazioni impostato su READ UNCOMMITTED, SQL Server 2000 interrompe la query e restituisce il seguente messaggio di errore:

Server: Messaggio 601, 12, di livello 3, la riga 14 stato
Impossibile continuare la scansione tramite NOLOCK a causa di spostamento dei dati.

Cause

Questo comportamento pu˛ verificarsi quando tra il tempo di che SQL Server legge la posizione della riga da un indice e l'ora che SQL Server recupera la riga viene eliminata una riga in una tabella.

Risoluzione

Informazioni sul Service pack

Per risolvere il problema, ottenere il service pack pi¨ recente per Microsoft SQL Server 2000. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
290211Come ottenere il service pack pi¨ recente per SQL Server 2000

Informazioni sull'hotfix

La versione di lingua inglese di questo aggiornamento rapido (hotfix) presenta gli attributi di file (o attributi successivi) elencati nella tabella riportata di seguito. Date e ore per questi file sono indicati nella coordinated universal time (UTC). Quando si visualizzano le informazioni sul file, viene convertito in ora locale. Per calcolare la differenza tra ora UTC e l'ora locale, utilizzare la scheda fuso orario dello strumento Data e ora del Pannello di controllo.
Date		Time	Version		Size		 File name
-----------------------------------------------------------------------------

07-Feb-2003	16:14			  786,432 bytes  Distmdl.ldf
07-Feb-2003	16:14			2,359,296 bytes  Distmdl.mdf
29-Jan-2003	12:25			      180 bytes  Drop_repl_hotfix.sql
31-Jan-2003	11:02	2000.80.763.0	1,557,052 bytes	 Dtsui.dll     
29-Jan-2003	15:48			  746,470 bytes  Instdist.sql
29-Jan-2003	12:25	                    1,402 bytes  Inst_repl_hotfix.sql
07-Feb-2003	17:10	2000.80.765.0      90,692 bytes  Msgprox.dll  
29-Jan-2003	11:48	7.0.9466.0        344,064 bytes  Msvcr70.dll      
29-Jan-2003	11:48	2000.80.722.0      57,904 bytes  Osql.exe         
07-Feb-2003	14:23                   1,065,895 bytes  Replmerg.sql
07-Feb-2003	17:10	2000.80.765.0	  221,768 bytes  Replprov.dll     
07-Feb-2003	17:10	2000.80.765.0     307,784 bytes  Replrec.dll      
29-Jan-2003	15:48		   	1,084,318 bytes  Replsys.sql
29-Jan-2003	11:48	2000.80.534.0	  127,548 bytes  Sqdedev.dll    
07-Feb-2003	17:10	2000.80.765.0	  176,696 bytes  Sqlmap70.dll  
07-Feb-2003	17:10	2000.80.765.0	   57,920 bytes  Sqlrepss.dll    
14-Feb-2003	13:22	2000.80.769.0   7,512,145 bytes  Sqlservr.exe   
29-Jan-2003	11:48	2000.80.194.0     180,290 bytes  Sqlunirl.dll     
07-Feb-2003	17:10	2000.80.765.0      45,644 bytes  Sqlvdi.dll   
07-Feb-2003	17:10	2000.80.765.0      82,492 bytes  Ssnetlib.dll     
				
Nota A causa delle dipendenze fra i file, la funzionalitÓ che contiene i file o l'aggiornamento rapido (hotfix) pi¨ recente pu˛ contenere anche ulteriori file.


Status

Microsoft ha confermato che questo problema riguarda i prodotti sono elencati nella sezione "Si applica a".Questo problema Ŕ stato innanzitutto corretto in Microsoft SQL Server 2000 Service Pack 4.

Informazioni

Dopo aver installato l'hotfix, Ŕ possibile utilizzare il flag di traccia 9134 per modificare il comportamento di SQL Server. Per attivare il flag di traccia quindi 9134 in modo che sia attivato ogni volta che viene avviata, aggiungere il flag di traccia come parametro di avvio di SQL Server. Per aggiungere il flag di traccia 9134 come parametro di avvio di SQL Server, attenersi alla seguente procedura:
  1. In SQL Server Enterprise Manager, fare clic con il pulsante destro del mouse sul server che esegue SQL Server e scegliere ProprietÓ .
  2. Nella scheda Generale , fare clic su avvio parametri .
  3. Nella casella di testo del parametro , digitare -T9134 , fare clic su Aggiungi e quindi fare clic su OK .
  4. Nel Properties(Configure) SQL Server < server nome > finestra di dialogo fare clic su OK .
  5. Riavviare il servizio SQL Server per il nuovo parametro rendere effettive.
In alternativa, Ŕ possibile eseguire la query riportata di seguito in Query Analyzer per attivare il flag di traccia in modo dinamico:
DBCC TRACEON (9134, -1)
tuttavia, se non si aggiunge il flag di traccia 9134 come un parametro di avvio, l'effetto del comando DBCC TRACEON viene perduto quando viene riavviato il servizio SQL Server.

Quando Ŕ attivato il flag di traccia 9134 e una riga viene eliminata o modificata tra il tempo di che SQL Server legge la posizione della riga e l'ora che recupera la riga tramite una ricerca di segnalibro, la query non verrÓ interrotta o restituire errori 601. Al contrario, SQL Server Ignora la riga che non Ŕ possibile individuare e continua a cercare ulteriori righe che soddisfano i criteri di query. Pertanto continua l'esecuzione della query, tuttavia, i risultati restituiti potrebbero non includere le righe che sono state eliminate o spostate durante l'esecuzione della query.

Nota Le informazioni in questo articolo e l'analisi flag si applicano solo a una query che viene eseguita con il livello di isolamento delle transazioni Ŕ impostato su READ UNCOMMITTED. Le informazioni non si applica a una query che viene eseguita con l'hint per query optimizer NOLOCK. In che caso, il comportamento rimane invariato rispetto a quanto descritto nella sezione "Sintomi".

Inoltre, il flag di traccia non influenza il fatto che le incoerenze altri errori e i dati possono verificarsi durante la lettura dei dati di cui non Ŕ stato eseguito il commit. Per ulteriori informazioni sui livelli di isolamento supportati da SQL Server e l'effetto dell'utilizzo ogni livello di isolamento, vedere l'argomento di "Blocco" nella documentazione in linea di SQL Server.

L'utilizzo di questo flag di traccia non Ŕ consigliabile a meno che non applicano tutte le seguenti:
  • L'applicazione in uso richiede un livello di isolamento UNCOMMITTED READ.
  • L'applicazione in uso si Ŕ verificato un numero elevato di 601 errori.
  • ╚ possibile comprendere che, quando si utilizza il flag di traccia, vengono ignorate le righe che sono state eliminate o spostate durante l'esecuzione della query.
Nota Prima di utilizzare il livello di isolamento READ UNCOMMITTED, Ŕ necessario comprendere le funzionalitÓ. Per ulteriori informazioni sul livello READ UNCOMMITTED isolamento, visitare il seguente sito Web MSDN (informazioni in lingua inglese):
http://msdn2.microsoft.com/en-us/library/ms171885.aspx

Riferimenti

Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
235880INF: Suggerimento di ottimizzazione NOLOCK o a livello di isolamento UNCOMMITTED lettura genera l'errore 605
Per ulteriori informazioni, visitare i seguenti siti Web MSDN:
Risoluzione dei problemi Errore 601
http://msdn2.microsoft.com/en-us/library/aa258726(SQL.80).aspx
SET LIVELLO DI ISOLAMENTO DELLA TRANSAZIONE
http://msdn2.microsoft.com/en-us/library/aa259216(SQL.80).aspx

ProprietÓ

Identificativo articolo: 815008 - Ultima modifica: venerdý 2 novembre 2007 - Revisione: 6.6
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
Chiavi:á
kbmt kbhotfixserver kbqfe kbsqlserv2000presp4fix kbbug kberrmsg kbfix KB815008 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: 815008
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