0

ich mehrere SQLs ausführen (wählen, zu aktualisieren und einfügen) innerhalb einzelner Datenbankverbindung und Transaktion, einer der SQLs ist, das Gleichgewicht eines KontosAbrufen von einzelnen Zeile innerhalb Transaktion hängt

select top 1 balance from sample_table where account_id={accountId} order by id desc 

Diese SQL hängt nur abrufen und nur dann, wenn sich in der Tabelle "sample_table" für das Konto {accountId} tatsächlich keine Datensätze befinden, ansonsten funktioniert es normal. Hängt bedeutet, dass es wartet, bis ein Zeitüberschreitungsausnahmefehler auftritt, und während dieses "Wartens" hängt auch das Ausführen des SQL von Sql Server Management Studio.

I SQL Server 2008

dank

EDIT bin mit:

Nach mehreren Versuchen gleiche Aktion auszuführen, es funktioniert und alle Datensätze korrekt eingesetzt und dann die App funktioniert wie der Charme danach. Wiederherstellen der Datenbank, dann ist das Problem wieder zurück.

+0

Ohne zu sehen, Ihr Schema zu sagen, es ist schwer; irgendwelche Primärschlüssel oder Indizes auf der Tabelle? Ich würde annehmen, dass "id" primär mit auto increment ist und dass account_id ein Fremdschlüssel ist, wo das ist und ein Primärschlüssel ist? – Codexer

+0

ID ist ein Primärschlüssel account_id ist indiziert – sami

+0

Gehen Sie zum Aktivitätsmonitor in Management Studio und beenden Sie die Prozesse, die mit dieser bestimmten Datenbank verknüpft sind. Es könnte sein, dass Transaktionen geöffnet und nie geschlossen wurden ... es könnte auf der Code-Seite passiert sein, und das wird Ihnen eine saubere Weste geben. Überprüfen Sie alle Ihre insert/update-Anweisungen, um sicherzustellen, dass sie ordnungsgemäß committed/closed werden, wenn sie eine Sperre beenden und Probleme verursachen. Du hast erwähnt, dass dies nur ein Teil der Aussage ist, kannst du den Rest posten, wenn dem so ist? – Codexer

Antwort

0

ist die Frage nach dem Wiederaufbau der Tabelle festgelegt, im Grunde dieses SQL-Ausführung:

alter table sample_table rebuild 
Verwandte Themen