SQL Server – Lock Timeout

Lock Timeout event indicates that a request for a lock on a resource, such as a page, has timed out because another transaction is holding a blocking lock on the required resource. Time-out is determined by the @@LOCK_TIMEOUT system function.

Lock Timeout

We also can be set timeout time using SET LOCK_TIMEOUT statement there duration milliseconds and 1000 milliseconds means 1 second.

SET LOCK_TIMEOUT

For example I have set timeout as a1000 milliseconds  (1 seconds) and create 2 session 1 update saleshead tables(so there exclusive lock create) and saleshead have lotof data so it will take time and same time session 2 selecting data from the same table so it will wait for 1 seconds after that will timeout like that :

SET LOCK_TIMEOUT 1

Lock Timeout events with a duration of 0 are commonly the result of internal lock probes and are not necessarily an indication of a problem. The Lock Timeout (timeout > 0) event can be used to ignore time-outs with duration of 0.

Timeout ModeID

0=NULL – Compatible with all other lock modes (LCK_M_NL)
1=Schema Stability lock (LCK_M_SCH_S)
10=Shared with Intent Exclusive (LCK_M_SIX)
11=Update with Intent Exclusive (LCK_M_UIX)
12=Bulk Update Lock (LCK_M_BU)
13=Key range Shared/Shared (LCK_M_RS_S)
14=Key range Shared/Update (LCK_M_RS_U)
15=Key Range Insert NULL (LCK_M_RI_NL)
16=Key Range Insert Shared (LCK_M_RI_S)
17=Key Range Insert Update (LCK_M_RI_U)
18=Key Range Insert Exclusive (LCK_M_RI_X)
19=Key Range Exclusive Shared (LCK_M_RX_S)
2=Schema Modification Lock (LCK_M_SCH_M)
20=Key Range Exclusive Update (LCK_M_RX_U)
21=Key Range Exclusive Exclusive (LCK_M_RX_X)
3=Shared Lock (LCK_M_S)
4=Update Lock (LCK_M_U)
5=Exclusive Lock (LCK_M_X)
6=Intent Shared Lock (LCK_M_IS)
7=Intent Update Lock (LCK_M_IU)
8=Intent Exclusive Lock (LCK_M_IX)
9=Shared with intent to Update (LCK_M_SIU)

OwnerID

1=TRANSACTION
2=CURSOR
3=SESSION
4=SHARED_TRANSACTION_WORKSPACE
5=EXCLUSIVE_TRANSACTION_WORKSPACE

TypeID

1=NULL_RESOURCE
2=DATABASE
3=FILE
5=OBJECT
6=PAGE
7=KEY
8=EXTENT
9=RID
10=APPLICATION
11=METADATA
12=AUTONAMEDB
13=HOBT
14=ALLOCATION_UNIT

How to check/ trace Timeout using profiler:

  1. login in profiler and select tsql_locks or also you can use blank template.
  2. Now Select Lock Timeout Events form “Events Selection” Tab there events lists come according to your selection template In that case I have selected Blank template like
profiler : Lock Timeout  events

Select column according to your required  and click on OK/Run but like

profiler : Lock Timeout result

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *