2010-10-20 17 views
12

Wie kann ich eine nicht committete Transaktion beenden oder zurücksetzen?Wie wird eine aktive Transaktion abgebrochen oder zurückgesetzt?

ich meine aktiven Transaktionen mit der folgenden SQL-Auflistung:

SELECT * FROM sys.dm_tran_session_transactions 

Mein Ergebnis ist:

session_id transaction_id  transaction_descriptor enlist_count is_user_transaction is_local is_enlisted is_bound 
---------------------------------------------------------------------------------------------------------------------- 
54   117260    0x0100000036000000  0   1     1  0   0 

Ich mag nicht die Sitzung (54) töten ...

Danke allen

+2

Ich glaube nicht, Sie können. Ich schätze, Sie könnten versuchen, einen Fehler zu konstruieren, der die Transaktion stoppt, und wenn 'XACT_ABORT' aktiviert ist, wird automatisch ein Rollback ausgeführt, aber was ist der Sinn? Warum nicht den Spid töten? –

+0

Ich möchte nicht spid töten, weil ich nicht Benutzer Sitzung töten möchte, aber ich denke, ich muss es tun ... Ich habe keine Meinung. – ogun

+0

Wahrscheinlich möchte er nicht, dass die Verbindung des Benutzers durch das Beenden der Sitzung unterbrochen wird. – orka

Antwort

6

Sie können eine Transaktion von einer anderen Sitzung nicht töten/rollback, ohne die Eigentümersitzung.

Ich denke, das Kill/Rollback einer Transaktion aus der Sitzung eines anderen Benutzers bedeutet viele Design- und Sicherheitsregelverletzungen, da es die Eingabe einer anderen Benutzersitzung erfordert (im Kontext des aktuellen SQL Server-Engine-Designs). Deshalb wird es wahrscheinlich nicht implementiert.

+0

Ich denke schon, danke für die Antwort ... Ich wünschte, es kann getan werden. – ogun

14

alle Transaktion löschen, verwenden nur als eine temporäre Lösung

ALTER DATABASE DatabaseName 

SET SINGLE_USER 

WITH ROLLBACK IMMEDIATE; 

ALTER DATABASE DatabaseName 

SET MULTI_USER; 

this site verweisen für weitere Informationen

+0

Verwenden Sie dies nur als eine temporäre Lösung, da dies alle Transaktionen abbrechen wird –

+0

SQL Server 12.0 - "ALTER DATABASE-Anweisung in Multi-Anweisung-Transaktion nicht zulässig." –

+0

Ich fand dies auf (sql Autorität .com etwas) Bitte beziehen Sie sich auf diese Website für weitere Details .... –

Verwandte Themen