2010-10-20 9 views
12

Comment puis-je supprimer ou annuler une transaction non validée?Comment tuer ou annuler une transaction active?

Je suis la liste de mes transactions actives avec l'instruction SQL suivante:

SELECT * FROM sys.dm_tran_session_transactions 

Mon résultat est:

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 

Je ne veux pas tuer la session (54) ...

Merci à tous

+2

Je ne pense pas que vous pouvez. Je suppose que vous pourriez essayer d'inventer une erreur qui arrête la transaction et si "XACT_ABORT" est activé, il sera automatiquement annulé mais à quoi cela sert-il? Pourquoi ne pas tuer le spid? –

+0

Je ne veux pas tuer spid parce que je ne veux pas tuer la session de l'utilisateur, mais je suppose que je dois le faire ... Je n'ai aucune opinion. – ogun

+0

Il ne veut probablement pas que la connexion de l'utilisateur tombe en supprimant la session. – orka

Répondre

6

Vous ne pouvez pas tuer/annuler une transaction d'une autre session sans tuer le session propriétaire. Je pense, permettant de tuer/annuler une transaction de la session d'un autre utilisateur signifie de nombreuses violations de conception et de sécurité parce qu'il nécessite d'entrer une autre session utilisateur (dans le contexte de la conception actuelle du moteur SQL). C'est probablement pourquoi il n'est pas implémenté.

+0

je le pense, merci pour la réponse ... je souhaite que cela puisse être fait. – ogun

14

Pour effacer toutes les transactions, utilisez ce que comme solution temporaire

ALTER DATABASE DatabaseName 

SET SINGLE_USER 

WITH ROLLBACK IMMEDIATE; 

ALTER DATABASE DatabaseName 

SET MULTI_USER; 

se réfèrent this site pour plus d'infos

+0

l'utiliser uniquement comme une solution temporaire, car cela annulera toutes les transitions –

+0

SQL Server 12.0 - "L'instruction ALTER DATABASE n'est pas autorisée dans une transaction à plusieurs instructions." –

+0

je l'ai trouvé sur (autorité SQL .com quelque chose) s'il vous plaît se référer ce site pour plus de détails .... –

Questions connexes