次の方法で共有


Lock:Escalation イベント クラス

Lock:Escalation イベント クラスは、粒度の細かいロックが粗いロックに変換されたことを示します。たとえば、オブジェクト ロックに変換される行ロックなどです。 エスカレーション イベント クラスはイベント ID 60 です。

ロック:エスカレーションイベントクラスのデータ列

データ列名 データの種類 説明 列 ID フィルターの適用
ApplicationName nvarchar SQL Server のインスタンスへの接続を作成したクライアント アプリケーションの名前。 この列には、プログラムの表示名ではなく、アプリケーションによって渡された値が格納されます。 10 イエス
ClientProcessID int クライアント アプリケーションが実行されているプロセスに対し、ホスト コンピューターが割り当てた ID。 クライアントによりクライアント プロセス ID が指定されると、このデータ列に値が格納されます。 9 イエス
DatabaseID int ロックが取得されたデータベースの ID。 SQL Server Profiler では、 ServerName データ列がトレースにキャプチャされ、そのサーバーが利用可能な場合、データベースの名前が表示されます。 データベースに対応する値は、DB_ID 関数を使用して特定します。 3 イエス
DatabaseName nvarchar エスカレーションが発生したデータベースの名前。 35 イエス
EventClass int イベントの種類 = 60。 二十七 いいえ
EventSubClass int ロックエスカレーションの原因

0 - LOCK_THRESHOLD は、ステートメントがロックしきい値を超えたかどうかを示します。

1 - MEMORY_THRESHOLD は、ステートメントがメモリしきい値を超えたかどうかを示します。
21 (二十一) イエス
EventSequence int 要求内の特定のイベントのシーケンス。 51 いいえ
GroupID する int SQL トレース イベントが発生したワークロード グループの ID。 66 イエス
HostName nvarchar クライアントが実行されているコンピューターの名前。 このデータ列にはクライアントからホスト名が提供されている場合に値が格納されます。 ホスト名を指定するには、 HOST_NAME 関数を使用します。 8 イエス
IntegerData int HoBT ロック数。 ロックエスカレーション時の HoBT のロックの数。 二十五 イエス
IntegerData2 int 増加したロック数。 変換されたロックの合計数。 これらのロック構造は、エスカレートされたロックによって既にカバーされているため、割り当てが解除されます。 55 イエス
IsSystem int イベントがシステム プロセスとユーザー プロセスのどちらで発生したか。 1 はシステム、0 はユーザーです。 六十 イエス
LineNumber int ステートメントの行番号 Transact-SQL。 5 イエス
LoginName nvarchar ユーザーのログインの名前 (SQL Server セキュリティ ログインまたは DOMAIN\username の形式の Microsoft Windows ログイン資格情報)。 11 イエス
LoginSid image ログイン ユーザーのセキュリティ ID 番号 (SID)。 この情報は、 sys.server_principals カタログ ビューで参照できます。 各 SID はサーバーのログインごとに一意です。 41 イエス
モード 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。 (ロックエスカレーションがトリガーされた HoBT ID。) 56 イエス
オフセット int ステートメントTransact-SQLの開始オフセット。 61 イエス
OwnerID int 1 = トランザクション

2=カーソル

3=セッション

4 = 共有取引作業領域

5=EXCLUSIVE_TRANSACTION_WORKSPACE

6 = WAITFOR_QUERY
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 ロックエスカレーションの原因となった Transact-SQL ステートメントのテキスト。 1 イエス
TransactionID bigint システムによって割り当てられたトランザクション ID。 4 イエス
タイプ int ロックエスカレーションの詳細度

1 = NULL_RESOURCE

2=データベース

3=ファイル

5 = オブジェクト (テーブルレベル)

6=ページ

7=キー

8=範囲

9=RID

10=アプリケーション

11=メタデータ

12=HOBT

13=割り当て単位
五十七 イエス

例示

次の例では、 sp_trace_create プロシージャを使用してトレースを作成し、 sp_trace_setevent を使用してトレースにロックエスカレーション列を追加した後、 sp_trace_setstatus を使用してトレースを開始します。 EXEC sp_trace_setevent @TraceID, 60, 22, 1などのステートメントでは、60番号はエスカレーション イベント クラスを示し、22は ObjectID 列を示し、トレース イベントを ON に設定1

DECLARE @RC int, @TraceID int;  
EXEC @rc = sp_trace_create @TraceID output, 0, N'C:\TraceResults';  
-- Set the events and data columns you need to capture.  
EXEC sp_trace_setevent @TraceID, 60,  1, 1; --  1 = TextData  
EXEC sp_trace_setevent @TraceID, 60, 12, 1; -- 12 = SPID  
EXEC sp_trace_setevent @TraceID, 60, 21, 1; -- 21 = EventSubClass  
EXEC sp_trace_setevent @TraceID, 60, 22, 1; -- 22 = ObjectID  
EXEC sp_trace_setevent @TraceID, 60, 25, 1; -- 25 = IntegerData  
EXEC sp_trace_setevent @TraceID, 60, 55, 1; -- 25 = IntegerData2  
EXEC sp_trace_setevent @TraceID, 60, 57, 1; -- 57 = Type  
-- Set any filter  by using sp_trace_setfilter.  
-- Start the trace.  
EXEC sp_trace_setstatus @TraceID, 1;  
GO  

トレースが実行されたので、トレースするステートメントを実行します。 完了したら、次のコードを実行して停止し、トレースを閉じます。 この例では、fn_trace_getinfo関数を使用して、sp_trace_setstatus ステートメントで使用するtraceidを取得します。

-- After the trace is complete.  
DECLARE @TraceID int;  
-- Find the traceid of the current trace.  
SELECT @TraceID = traceid   
FROM ::fn_trace_getinfo(default)   
WHERE value = N'C:\TraceResults.trc';  
  
-- First stop the trace.   
EXEC sp_trace_setstatus @TraceID, 0;  
  
-- Close and then delete its definition from SQL Server.   
EXEC sp_trace_setstatus @TraceID, 2;  
GO  

こちらもご覧ください

sp_trace_setevent (Transact-SQL) イベント設定関数
sys.dm_tran_locks (Transact-SQL)