2009-04-29 1 views
3

Ich habe eine kleine Tabelle (200 Zeilen/400 KB) mit 4 Spalten - Nvarchar (MAX), Nvarchar (50) und zwei Ints. Ich habe ein Problem mit einer bestimmten Zeile, in der ich die int-Felder auswählen und aktualisieren kann. Wenn ich jedoch versuche, die nvarchar-Felder auszuwählen oder zu aktualisieren, wird die Abfrage unbegrenzt ausgeführt (mindestens 45 Minuten vor dem Abbrechen). Ich kann diese Zeile auch nicht löschen oder die Tabelle sogar abschneiden (die Abfrage wird erneut unbegrenzt ausgeführt).Kann nicht auf einzelne Zeile in SQL Server 2005 zugreifen Tabelle

Irgendwelche Ideen? Eines der int-Felder hat einen Primärschlüssel, aber keine Fremdschlüssel.

+0

DBCC checkdb zu sehen, ob Ihre Datenbank irgendwelche Probleme hat oder dbcc checktable – DForck42

Antwort

2

Sieht aus wie Sie eine nicht ausgeführten Transaktion Sperren Dinge nach unten.

Sie können sie über den Aktivitätsmonitor freigeben. Es befindet sich im Ordner Verwaltung der Datenbank, die Sie gerade betrachten.

Erweitern Sie das, klicken Sie mit der rechten Maustaste auf Aktivitätsmonitor, und wählen Sie Prozesse anzeigen aus. Sie können mit der rechten Maustaste auf Prozesse klicken und sie dort beenden.

Dies ist nicht immer die beste Lösung, insbesondere bei einer Produktionsdatenbank. Sie möchten im Allgemeinen herausfinden, warum die Transaktion nicht festgeschrieben ist, und sie entweder manuell zurücksetzen oder festschreiben.

2

Sind Sie sicher, dass die Zeile nicht gesperrt ist? Öffnen Sie eine neue Verbindung, führen Sie Ihre Select-Abfrage aus, notieren Sie sich die SPID entweder oben im Fenster 2000/2005 und im untersten 2008 Management Studio. In einem anderen Fenster führen Sie sp_who2. Suchen Sie das Spid aus der Abfrage, die den Datensatz ausführt.

Wenn Sie nicht festgeschriebene Daten nicht egal, oder wollen einfach nur die Reihe zu testen, zu tun:

select * from table with (nolock) where key = 'mykey' 
+0

Es eine ganze Zahl für zwei Einträge in BlkBy ist. Was kann ich von hier aus tun? –

+0

Die Nummern daneben verweisen auf andere Verbindungen zur Datenbank. Wenn Sie sie in der Liste finden, können Sie herausfinden, um welche Maschine oder welchen Benutzer es sich handelt, wenn sie ihre Software freigeben. Wenn Sie die Tabelle aktualisiert haben, haben Sie möglicherweise eine nicht abgeschlossene Transaktion, die sie abfragt. können Sie herausfinden, was jeder Prozess, den sie durch Ausführen dbcc Output 65 in Management Studio tun, wo 65 der spid des Verfahrens ist, dass Sie blockiert. – u07ch

0

wenn DBCC CHECKDB doenst't Hilfe wie Thirster42 sagte

ich würde die OldTable einfach kopieren Daten außer Problem Zeile in newtable & Drop ...

auch würde ich die Größe Ihrer TempDB überprüfen.

Check Profiler, vielleicht gibt es Trigger ausgelöst wird?

Siehe Ausführungsplan für etwas Ungewöhnliches ..