Lock:Timeout イベント クラス

Lock:Timeout イベント クラスは、要求したリソースで別のトランザクションがブロッキング ロックを保持しているために、ページなどのリソースのロック要求がタイムアウトしたことを示します。タイムアウトは @@LOCK_TIMEOUT システム関数で判定されます。また、SET LOCK_TIMEOUT ステートメントで設定できます。

Lock:Timeout イベント クラスを使用すると、タイムアウト状態がいつ発生するかを監視できます。この情報は、タイムアウトがアプリケーションのパフォーマンスに重大な影響を与えるかどうかの判断と、関係しているオブジェクトの特定に役立ちます。これらのオブジェクトを変更するアプリケーション コードを調べて、タイムアウトを最小限に抑える変更を行えるかどうかを判断できます。

一般的に、Lock:Timeout イベントの継続時間が 0 になるのは内部ロック調査の結果であり、必ずしも問題を示すわけではありません。Lock:Timeout (timeout > 0) イベントを使用して、継続時間が 0 のタイムアウトを無視できます。

Lock:Timeout イベント クラスのデータ列

データ列名

データ型

説明

列 ID

フィルタの適用

ApplicationName

nvarchar

SQL Server のインスタンスへの接続を作成したクライアント アプリケーションの名前。この列には、プログラムの表示名ではなく、アプリケーションによって渡された値が格納されます。

10

BinaryData

image

ロック リソース ID。

2

ClientProcessID

int

クライアント アプリケーションが実行されているプロセスに対し、ホスト コンピュータが割り当てた ID。クライアントによりクライアント プロセス ID が指定されると、このデータ列に値が格納されます。

9

DatabaseID

int

ロックのタイムアウトが発生したデータベースの ID。ServerName データ列がトレースでキャプチャされていて、サーバーが使用できる場合、SQL Server Profiler にデータベースの名前が表示されます。データベースに対応する値は、DB_ID 関数を使用して特定します。

3

DatabaseName

nvarchar

タイムアウトが発生したデータベースの名前。

35

Duration

bigint

ロック要求が発行されてからロックがタイムアウトしたときまでの時間 (マイクロ秒)。

13

EndTime

datetime

イベントが終了した時刻。

15

EventClass

int

イベントの種類 = 27。

27

不可

EventSequence

int

要求内の特定のイベントのシーケンス。

51

不可

GroupID

int

SQL トレース イベントが発生したワークロード グループの ID。

66

HostName

nvarchar

クライアントが実行されているコンピュータの名前。クライアントによりホスト名が指定されている場合は、このデータ列に値が格納されます。ホスト名を指定するには、HOST_NAME 関数を使用します。

8

IntegerData2

int

単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。

55

IsSystem

int

イベントがシステム プロセスで発生したか、ユーザー プロセスで発生したかを示します。1 = システム、0 = ユーザーです。

60

LoginName

nvarchar

ユーザーのログイン名。SQL Server セキュリティ ログイン、または DOMAIN\username の形式で表された Microsoft Windows ログイン資格情報です。

11

LoginSid

image

ログイン ユーザーのセキュリティ ID 番号 (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

タイムアウトしたオブジェクトの ID (使用可能かつ適用可能な場合)。

22

ObjectID2

bigint

関連するオブジェクトまたはエンティティの ID (使用可能かつ適用可能な場合)。

56

OwnerID

int

1 = TRANSACTION

2 = CURSOR

3 = SESSION

4 = SHARED_TRANSACTION_WORKSPACE

5 = EXCLUSIVE_TRANSACTION_WORKSPACE

58

RequestID

int

ステートメントが含まれている要求の ID。

49

ServerName

nvarchar

トレースされている SQL Server のインスタンスの名前。

26

不可

SessionLoginName

nvarchar

セッションを開始したユーザーのログイン名。たとえば、Login1 を使用して SQL Server に接続し、Login2 でステートメントを実行すると、SessionLoginName には Login1 が表示され、LoginName には Login2 が表示されます。この列には、SQL Server ログインと Windows ログインの両方が表示されます。

64

SPID

int

イベントが発生したセッションの ID。

12

StartTime

datetime

イベントの開始時刻 (取得できた場合)。

14

TextData

ntext

タイムアウトが発生したときに取得されていたロックの種類に依存するテキスト値。

1

TransactionID

bigint

トランザクションにシステムが割り当てた ID。

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