共用方式為


Lock:Deadlock 事件類別

當試圖取得鎖定,而這項嘗試是死結的一部分且已選定為死結的犧牲者,使得這項嘗試遭到取消,則會產生 Lock:Deadlock 事件類別。

使用 Lock:Deadlock 事件類別來監視何時發生死結以及涉及哪些物件。 您可以使用此資訊來判斷死結是否對應用程式效能造成重大影響。 然後,您可以檢查應用程式的程式碼來判斷能否做一些變更,使死結數量減到最少。

Lock:Deadlock 事件類別資料行

資料行名稱

資料類型

說明

資料行識別碼

可篩選

ApplicationName

nvarchar

建立 SQL Server 執行個體之連接的用戶端應用程式名稱。 這個資料行會填入應用程式所傳送的值,而非程式的顯示名稱。

10

BinaryData

image

鎖定資源識別碼。

2

ClientProcessID

int

由主機電腦指派給處理序 (用戶端應用程式執行所在) 的識別碼。 如果用戶端提供處理序識別碼,這個資料行就會擴展。

9

DatabaseID

int

取得鎖定之資料庫的識別碼。 如果在追蹤中擷取到 ServerName 資料行,而且伺服器可以使用,則 SQL Server Profiler 會顯示資料庫名稱。 請使用 DB_ID 函數判斷資料庫的值。

3

DatabaseName

nvarchar

取得此鎖定的資料庫名稱。

35

Duration

bigint

發出鎖定要求到發生死結之間的時間量 (以百萬分之一秒為單位)。

13

EndTime

datetime

死結結束的時間。

15

EventClass

int

事件類型 = 25。

27

EventSequence

int

要求中之給定事件的順序。

51

GroupID

int

SQL 追蹤事件引發所在之工作負載群組的識別碼。

66

HostName

nvarchar

執行用戶端的電腦名稱。 如果用戶端提供主機名稱,這個資料行就會擴展。 若要判斷主機名稱,請使用 HOST_NAME 函數。

8

IntegerData

int

死結號碼。 當伺服器啟動時,會從 0 開始指派數字,並隨著每一個死結而增加數字。

25

IntegerData2

int

僅供參考之用。不支援。我們無法保證未來的相容性。

55

IsSystem

int

指出事件是發生在系統處理序或使用者處理序。 1 = 系統,0 = 使用者。

60

LoginName

nvarchar

使用者登入的名稱 (SQL Server 安全性登入或 DOMAIN\username 格式的 Microsoft Windows 登入認證)。

11

LoginSid

image

已登入之使用者的安全性識別碼 (SID)。 您可以在 sys.server_principals 目錄檢視中找到這項資訊。 伺服器上的每一個登入之 SID 是唯一的。

41

Mode

int

死結之後產生的模式。

0=NULL - 與其他所有鎖定模式相容 (LCK_M_NL)

1=結構描述穩定性鎖定 (LCK_M_SCH_S)

2=結構描述修改鎖定 (LCK_M_SCH_M)

3=共用鎖定 (LCK_M_S)

4=更新鎖定 (LCK_M_U)

5=獨佔鎖定 (LCK_M_X)

6=意圖共用鎖定 (LCK_M_IS)

7=意圖更新鎖定 (LCK_M_IU)

8=意圖獨佔鎖定 (LCK_M_IX)

9=與意圖更新共用 (LCK_M_SIU)

10=與意圖獨佔共用 (LCK_M_SIX)

11=以意圖獨佔更新 (LCK_M_UIX)

12=大量更新鎖定 (LCK_M_BU)

13=關鍵範圍共用/共用 (LCK_M_RS_S)

14=關鍵範圍共用/更新 (LCK_M_RS_U)

15=關鍵範圍插入 NULL (LCK_M_RI_NL)

16=關鍵範圍插入共用 (LCK_M_RI_S)

17=關鍵範圍插入更新 (LCK_M_RI_U)

18=關鍵範圍插入獨佔 (LCK_M_RI_X)

19=關鍵範圍獨佔共用 (LCK_M_RX_S)

20=關鍵範圍獨佔更新 (LCK_M_RX_U)

21=關鍵範圍獨佔獨佔 (LCK_M_RX_X)

32

NTDomainName

nvarchar

使用者所隸屬的 Windows 網域。

7

NTUserName

nvarchar

Windows 使用者名稱。

6

ObjectID

int

競爭的物件識別碼 (如果有且適用的話)。

22

ObjectID2

bigint

相關物件或實體的識別碼 (如果有且適用的話)。

56

OwnerID

int

1=TRANSACTION

2=CURSOR

3=SESSION

4=SHARED_TRANSACTION_WORKSPACE

5=EXCLUSIVE_TRANSACTION_WORKSPACE

58

RequestID

int

包含陳述式之要求的識別碼。

49

ServerName

nvarchar

正在追蹤之 SQL Server 執行個體的名稱。

26

SessionLoginName

nvarchar

引發工作階段之使用者的登入名稱。 例如,若您使用 Login1 連接到 SQL Server,並且以 Login2 執行陳述式,則 SessionLoginName 會顯示 Login1,而 LoginName 會顯示 Login2。 此資料行將同時顯示 SQL Server 和 Windows 登入。

64

SPID

int

事件發生所在之工作階段的識別碼。

12

StartTime

datetime

事件的開始時間 (如果可以取得的話)。

14

TextData

ntext

相依於所取得的鎖定類型的文字值。

1

TransactionID

bigint

由系統指派給交易的識別碼。

4

Type

int

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

57

請參閱

參考

sp_trace_setevent (Transact-SQL)

sys.dm_tran_locks (Transact-SQL)