Symptoms
Consider the following scenario in Microsoft SQL Server Compact 3.5:
-
You have two transactions of serializable isolation.
-
Both transactions try to perform a DML operation (query/DML) on the same table that contains a TABLOCK locking hint or an XLOCK locking hint.
In this scenario, you encounter a deadlock.
Cause
This issue occurs because both transactions wait for one another for XLOCK. When the query gets compiled, both transactions obtain the shared lock on the table and then holds the lock for serializable isolation. When both transactions try to perform an execute, the query on the same table that contains an XLOCK locking hint, then both transactions wait for one another for XLOCK. Therefore, a deadlock occurs.
Note This issue also occurs when both transactions perform a DML operation on the same table that contains a TABLOCK locking hint.Resolution
SQL Server Compact 3.5 Service Pack 2
The fix for this issue was first released in Cumulative Update 2. For more information about how to obtain this cumulative update package for SQL Server 2008 R2, click the following article number to view the article in the Microsoft Knowledge Base:
2289547 Cumulative Update 2 for SQL Server Compact 3.5 Service Pack 2
Status
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
More Information
For more information about Deadlock, visit the following Microsoft Developer Network (MSDN) website:
DeadlockFor more information about DML, visit the following MSDN website:
DMLFor more information about software update terminology, click the following article number to view the article in the Microsoft Knowledge Base:
824684 Description of the standard terminology that is used to describe Microsoft software updates