2008-09-17 3 views
1

SQL Server Version 2000.In welchen Situationen würden verschiedene Benutzer verschiedene Zeilen in einer Tabelle auf SQL Server sehen?

Wir haben eine Reihe von Desktops im Gespräch mit MSSQL Server. Wenn Sie nach einem bestimmten Datensatz suchen, geben einige Desktops die korrekten Daten zurück, einige jedoch nicht. Der SQL-Befehl lautet "SELECT * FROM PODORD WHERE ([NO] = 6141)" Auf einem oder zwei Desktops gibt dies einen Datensatz zurück. Auf dem Server und auf allen anderen Desktops wird kein Datensatz zurückgegeben.

In welchen Bereichen muss ich suchen? Was würde dazu führen, dass dies geschieht?

Antwort

4

Dieser Fehler stammt wahrscheinlich von einem Benutzer, der diesen Datensatz innerhalb einer Transaktion löschte/einfügte, aber die Transaktion noch nicht festlegte.

3

Überprüfen Sie auf jeder Maschine, mit welcher Datenbank und welchem ​​Server Sie sich verbinden - die Abfrage ist so einfach, dass Sie überall die gleiche Antwort erhalten müssen, wenn Sie keine Verbindung zu verschiedenen Datenbanken oder Servern herstellen.

2

Wenn es nur eine Arbeitsstation gibt, die die Zeile zurückgibt, dann klingt es so, als hätte diese Arbeitsstation eine offene Transaktion, die nicht festgeschrieben wurde.

Andernfalls ist es möglich, dass die Isolationsstufen für verschiedene Arbeitsstationen unterschiedlich sind, dh. einige sehen nicht festgeschriebene Daten und andere nicht?

2

Sie können sich die Berechtigungen für die Tabelle anzeigen lassen, aus der Sie auswählen, wenn Sie eine Verbindung zum Server als ein anderer Benutzer von jedem Computer herstellen.

Wenn einige Benutzer, aber keine anderen Benutzer Zugriff auf diese Tabelle haben, erhalten Sie möglicherweise das von Ihnen beschriebene Ergebnis.

0

Vielleicht ein oder zwei Benutzer, die Datensätze finden, verwenden einen anderen Schemaname und damit eine andere Tabelle. IE die meisten Benutzer verwenden dbo.PODORDH, aber ein oder zwei Benutzer verwenden otheruser.PODORDH.

1

Nachdem Sie alle oben genannten Optionen ausgeschöpft haben, würde ich in Zeilen- und Tabellensperren suchen. Wenn dies der Fall ist, sollte ein Fehler zurückgegeben werden, der besagt, dass eine Sperre aufgetreten ist. Führen Sie eine Anwendung aus, die Fehler verschlucken könnte?