Update: Abfrage mit der Transaktionsisolationsstufe READ-UNCOMMITTED festgelegt schlägt mit Fehler 601 fehl.

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 815008 - Produkte anzeigen, auf die sich dieser Artikel bezieht
# FEHLER: 363988 (SHILOH_BUGS)
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Wenn eine Abfrage mit der Transaktionsisolationsstufe READ-UNCOMMITTED festgelegt ausgeführt wird, SQL Server 2000 bricht die Abfrage und gibt folgende Fehlermeldung:

Server: Fehlermeldung 601 auf 12, State 3, Zeile 14
Scan mit NOLOCK wegen Datenverschiebung konnte nicht fortgesetzt werden.

Ursache

Dieses Verhalten kann auftreten, wenn eine Zeile in einer Tabelle gelöscht wird, zwischen dem liest SQL Server die Position der Zeile aus dem Index und SQL Server die Zeile abgerufen.

Lösung

Informationen zu Service Packs

Installieren Sie das neueste Service Pack für Microsoft SQL Server 2000, um dieses Problem zu beheben. Weitere Informationen finden Sie die folgende KB-Artikelnummer:
290211So erhalten Sie das neueste Service Pack für SQL Server 2000

Hotfix-Informationen

Die englische Version dieses Hotfixes weist die Dateiattribute (oder höher Dateiattribute), die in der folgenden Tabelle aufgelistet werden. Die Datums- und Uhrzeitangaben für diese Dateien werden in Coordinated Universal Time aufgeführt (UTC). Wenn Sie sich die Dateiinformationen ansehen, werden diese Angaben in die lokale Zeit konvertiert. Um die Differenz zwischen UTC und der Ortszeit zu ermitteln verwenden Sie die Registerkarte Zeitzone des Tools ? Datum und Uhrzeit in der Systemsteuerung.
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     
				
Hinweis: Aufgrund wechselseitiger Abhängigkeiten zwischen kann das aktuellste Update oder Feature, das die Dateien enthält, auch weitere Dateien enthalten.


Status

Microsoft hat bestätigt, dass dies ein Problem in Microsoft-Produkten handelt, die im Abschnitt "Gilt für" aufgeführt sind.Dieses Problem wurde erstmals in Microsoft SQL Server 2000 Service Pack 4.

Weitere Informationen

Nachdem Sie den Hotfix installiert haben, können Sie Ablaufverfolgungsflags 9134, um das SQL Server-Verhalten zu ändern. Ablaufverfolgungsflags 9134 aktivieren, so dass es eingeschaltet ist bei SQL Server startet, fügen Sie das Ablaufverfolgungsflag als SQL Server-Startparameter hinzu. Um Ablaufverfolgungsflags 9134 als SQL Server-Startparameter hinzuzufügen, gehen Sie folgendermaßen vor:
  1. Klicken Sie in SQL Server Enterprise Manager mit der rechten Maustaste auf den Server, der SQL Server ausgeführt wird, und klicken Sie dann auf Eigenschaften .
  2. Klicken Sie auf der Registerkarte Allgemein auf Start Parameter .
  3. Geben Sie im Textfeld Parameter -T9134 , klicken Sie auf Hinzufügen und klicken Sie dann auf OK .
  4. In der SQL Server-Properties(Configure) - < Server Name > Dialogfeld Feld, klicken Sie auf OK .
  5. Starten Sie den SQL-Serverdienst für den neuen Parameter wirksam werden.
Sie können die folgende Abfrage im Query Analyzer, um dynamisch schalten Sie das Ablaufverfolgungsflag ausführen, als Alternative:
DBCC TRACEON (9134, -1)
jedoch Wenn Sie Ablaufverfolgungsflags 9134 nicht als Startparameter hinzufügen, die Auswirkung der DBCC TRACEON-Befehl ist verloren gehen beim Neustart der SQL Server-Dienst.

Wenn Ablaufverfolgungsflags 9134 eingeschaltet ist und eine Zeile gelöscht oder geändert werden, zwischen dem SQL Server liest den Speicherort der Zeile und es die Zeile durch eine Lesezeichensuche abruft, die Abfrage nicht abgebrochen oder Fehler 601 zurückzugeben. Stattdessen SQL Server ignoriert die Zeile, die nicht gefunden werden kann und weiterhin nach zusätzlichen Zeilen suchen, die die Abfragekriterien erfüllen. Aus diesem Grund Abfrageausführung fortgesetzt wird; die Ergebnisse, die SQL Server gibt möglicherweise jedoch nicht enthalten Zeilen, die während der Abfrageausführung verschoben oder gelöscht wurden.

Hinweis: Die Informationen in diesem Artikel und die Ablaufverfolgung Flag nur auf einer Abfrage angewendet, die mit der Isolationsstufe für Transaktionen ausgeführt wird festgelegt, READ UNCOMMITTED. Die Informationen gelten nicht für eine Abfrage, die mit dem Hinweis NOLOCK-Abfrageoptimierer ausgeführt wird. In diesem Fall bleibt das Verhalten gegenüber, was im Abschnitt "Problembeschreibung" beschrieben ist.

Darüber hinaus wirkt das Ablaufverfolgungsflag die Tatsache sich nicht andere Inkonsistenzen Fehler und Daten können auftreten, wenn nicht gespeicherte Daten zu lesen. Weitere Informationen über die Isolationsstufen von SQL Server und die Auswirkungen der Verwendung jedes Isolationsstufe unterstützten finden Sie "Locking" in der SQL Server-Onlinedokumentation.

Microsoft empfiehlt die Verwendung dieses Ablaufverfolgungsflags nicht, wenn alle folgenden anwenden:
  • Die Anwendung verwendet erfordert eine READ UNCOMMITTED-Isolationsstufe.
  • Die Anwendung in Verwendung ist eine große Anzahl von 601 Fehler aufgetreten.
  • Sie wissen, dass wenn Sie das Ablaufverfolgungsflag verwenden, die Zeilen, die gelöscht oder verschoben, während der Abfrageausführung der wurden ignoriert werden.
Hinweis: Bevor Sie die READ UNCOMMITTED-Isolationsstufe verwenden, müssen Sie seine Funktionalität verstehen. Weitere Informationen über die READ UNCOMMITTED-Isolationsstufe der folgenden Microsoft Developer Network (MSDN)-Website:
http://msdn2.microsoft.com/en-us/library/ms171885.aspx

Informationsquellen

Weitere Informationen finden Sie die folgende KB-Artikelnummer:
235880Info: Leistungsoptimierung Hinweis NOLOCK oder Isolationsstufe READ UNCOMMITTED generiert Fehler 605
Weitere Informationen finden Sie auf der folgenden MSDN-Websites:
Problembehandlung Fehler 601
http://msdn2.microsoft.com/en-us/library/aa258726(SQL.80).aspx
FESTLEGEN DER TRANSAKTIONSISOLATIONSSTUFE
http://msdn2.microsoft.com/en-us/library/aa259216(SQL.80).aspx

Eigenschaften

Artikel-ID: 815008 - Geändert am: Freitag, 2. November 2007 - Version: 6.6
Die Informationen in diesem Artikel beziehen sich auf:
  • 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
Keywords: 
kbmt kbhotfixserver kbqfe kbsqlserv2000presp4fix kbbug kberrmsg kbfix KB815008 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 815008
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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