Why does the following SQL Server insert deadlock when run within a transaction?

The 'convert' in question is a lock convert' from RangeS-S to RangeI-N not related to the 'CONVERT' function in any way. The fact that you have RangeS-S locks already placed on the PK_Tag_1 index indicates that you're doing something more than just an INSERT. Does your transaction does, by any chance, a check first to see if the the new record 'exists' before attempting the insert?

The 'convert' in question is a 'lock convert' from RangeS-S to RangeI-N, not related to the 'CONVERT' function in any way. The fact that you have RangeS-S locks already placed on the PK_Tag_1 index indicates that you're doing something more than just an INSERT. Does your transaction does, by any chance, a check first to see if the the new record 'exists' before attempting the insert?

Indeed it does... – Brehtt Jun 16 '09 at 0:46 I've updated the question to reflect the situation more completely – Brehtt Jun 16 '09 at 1:02 I've changed the isolation level to snapshot, which seems to have alleviated my deadlock woes. Thanks for your help :) – Brehtt Jun 16 '09 at 4:37 Also, I realise that snapshot isolation will not prevent the case where duplicate tags are associated with the same entity. For this I will create a unique key constraint and deal with the potential error gracefully – Brehtt Jun 16 '09 at 4:40.

Check the isolationLevel, which is used in your query. Note, that TransactionScope uses Serializable isolation level by default (msdn.microsoft.com/en-us/library/ms17215...). Try change the isolation level of your transaction to Read Commited.

You don't need a transaction at all. The scope_identity() function will return the id last created in the same scope, so there is no problem if another insert is executed before you get the id, as that is in a different scope.

The transaction scope is so I can Roll the changes back if something goes wrong elsewhere, or at the ver least, when the uni test finishes. – Brehtt Jun 15 '09 at 8:13 @downvoter: Why the downvote? If you don't say what you think is wrong, it can't improve the answer in any way.

– Guffa Nov 2 '10 at 10:59.

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions


Thank You!
send