SQL Server 2008 で @@TRANLVL システム変数を使用して現在のトランザクション レベルを確認する方法 - シンプルで使いやすい方法
SQL Server 2008 で現在のトランザクション レベルを確認する方法
SQL Server 2008 では、現在のトランザクション レベルを知ることは、トランザクションの動作を理解し、問題をデバッグする上で重要です。トランザクション レベルは、コミットまたはロールバックされるまで、データベース内のデータに対する変更を隔離するレベルを示します。
方法
現在のトランザクション レベルを確認するには、次のいずれかの方法を使用できます。
- @@TRANLVL システム変数を使用する
SELECT @@TRANLVL;
このクエリは、現在のトランザクション レベルを整数として返します。0 はトランザクションが開始されていないことを示し、1 はネストされたトランザクションの最初のレベルを示します。
- SYSTEM_USER システム テーブルを使用する
SELECT transaction_nest_level
FROM SYSTEM_USER;
- DBCC USERTRAN ステートメントを使用する
DBCC USERTRAN;
このステートメントは、現在のトランザクションに関する情報を表示するテーブルを返します。このテーブルには、トランザクション レベルを含む情報が含まれています。
例
次の例は、@@TRANLVL システム変数を使用して現在のトランザクション レベルを確認する方法を示します。
USE AdventureWorks2012;
BEGIN TRAN;
SELECT @@TRANLVL;
ROLLBACK TRAN;
このコードを実行すると、次の出力が表示されます。
1
これは、トランザクションが開始され、レベル 1 であることを示します。
- トランザクション レベルは、ネストされたトランザクションごとに 1 ずつ増えます。
- トランザクションがコミットまたはロールバックされると、トランザクション レベルは 0 にリセットされます。
- トランザクション レベルは、現在のセッションにのみ適用されます。
USE AdventureWorks2012;
BEGIN TRAN;
SELECT @@TRANLVL;
ROLLBACK TRAN;
1
USE AdventureWorks2012;
BEGIN TRAN;
SELECT transaction_nest_level
FROM SYSTEM_USER;
ROLLBACK TRAN;
1
USE AdventureWorks2012;
BEGIN TRAN;
DBCC USERTRAN;
ROLLBACK TRAN;
トランザクション ID: 1
トランザクション レベル: 1
トランザクション ログ ファイル: 'c:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\AdventureWorks2012_log.trn'
トランザクション ステータス: 未コミット
トランザクション ログ 使用量: 4 KB
トランザクション ログ バーチャル アドレス: 0x0000000021F71000
トランザクション ロック: 0 個
トランザクション 行ロック: 0 個
トランザクション テーブル ロック: 0 個
トランザクション インデックス ロック: 0 個
トランザクション ページ ロック: 0 個
トランザクション 使用量: 4 KB
トランザクション 最後の変更: 2024-04-27 23:12:34.000
この出力には、トランザクション レベルを含む、現在のトランザクションに関する情報が含まれています。
説明
これらの例は、SQL Server 2008 で現在のトランザクション レベルを確認する方法を示しています。 @@TRANLVL システム変数、SYSTEM_USER システム テーブル、DBCC USERTRAN ステートメントのいずれかを、状況に応じて使用できます。
@@TRANLVL システム変数は、最も簡潔で使いやすい方法です。
DBCC USERTRAN ステートメントは、最も詳細な情報を提供しますが、他の方法よりも複雑です。
- SQL Server Management Studio (SSMS) を使用する
- SSMS で接続している SQL Server インスタンスに接続します。
- オブジェクト エクスプローラーで、セッション フォルダを展開します。
- 現在のセッション ノードを右クリックし、プロパティ を選択します。
- セッション プロパティ ダイアログ ボックスで、トランザクション ページを選択します。
- トランザクション レベル フィールドには、現在のトランザクション レベルが表示されます。
- 拡張イベントを使用する
- 拡張イベントを作成して、transaction_begin および transaction_commit イベントをキャプチャします。
- これらのイベントの transaction_isolation_level フィールドを確認して、トランザクション レベルを取得します。
- SQL Server Profiler を使用する
- SQL Server Profiler でトレースを作成し、Transaction イベントを選択し、Isolation Level データ カラムを追加します。
- トレースを実行すると、現在のトランザクション レベルを含むイベントが表示されます。
これらの方法は、より高度な方法であり、データベース管理者や熟練した開発者によって一般的に使用されます。
sql sql-server sql-server-2008