DBCC OPENTRAN (Transact-SQL)
指定されたデータベース内に存在する最も古いアクティブ トランザクション、および (存在する場合は) 最も古い分散型と非分散型のレプリケートされたトランザクションに関する情報を表示します。結果は、アクティブ トランザクションが存在する場合、またはデータベースにレプリケーション情報が存在する場合にのみ表示されます。アクティブ トランザクションがない場合は、情報メッセージが表示されます。
メモ : |
---|
DBCC OPENTRAN は SQL Server 以外のパブリッシャではサポートされていません。 |
構文
DBCC OPENTRAN
[
( [ database_name | database_id | 0 ] ) ]
{ [ WITH TABLERESULTS ]
[ , [ NO_INFOMSGS ] ]
}
]
引数
- database_name | database_id | 0
最も古いトランザクションに関する情報を表示するデータベースの名前または ID を指定します。指定しない場合、または 0 を指定した場合は、現在のデータベースが使用されます。データベース名は、識別子のルールに従っている必要があります。
- WITH
オプションを指定可能にします。
- TABLERESULTS
テーブルに読み込める表形式で結果を返すように指定します。比較用としてテーブルに挿入できる表形式の結果を得たいときは、このオプションを指定します。このオプションを指定しない場合、結果は読みやすい形式で返されます。
- NO_INFOMSGS
すべての情報メッセージを表示しないようにします。
結果セット
開かれたトランザクションがない場合、DBCC OPENTRAN は次の結果セットを返します。
No active open transactions.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
解説
DBCC OPENTRAN は、開かれたトランザクションがトランザクション ログ内に存在するかどうかを調べるときに使用します。BACKUP LOG ステートメントを使用した場合は、ログの使用されていない部分しか切り捨てることができないため、開かれたトランザクションが存在すると、ログを完全に切り捨てることができなくなってしまいます。Microsoft SQL Server の以前のバージョンでは、ログからコミットされていないトランザクションをクリアするには、すべてのユーザーがログオフするか、サーバーをシャットダウンしてから再起動する必要がありました。開かれたトランザクションを識別するには、sp_who を使用してシステム プロセス ID を取得します。
権限
固定サーバー ロール sysadmin または固定データベース ロール db_owner のメンバシップが必要です。
例
次の例では、現在のデータベースのトランザクション情報を取得します。結果は異なる場合があります。
CREATE TABLE T1(Col1 int, Col2 char(3));
GO
BEGIN TRAN
INSERT INTO T1 VALUES (101, 'abc');
GO
DBCC OPENTRAN;
ROLLBACK TRAN;
GO
DROP TABLE T1;
GO
以下に結果セットを示します。
Transaction information for database 'master'.
Oldest active transaction:
SPID (server process ID) : 52
UID (user ID) : -1
Name : user_transaction
LSN : (518:1576:1)
Start time : Jun 1 2004 3:30:07:197PM
SID : 0x010500000000000515000000a065cf7e784b9b5fe77c87709e611500
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
参照
関連項目
BEGIN TRANSACTION (Transact-SQL)
COMMIT TRANSACTION (Transact-SQL)
DBCC (Transact-SQL)
DB_ID (Transact-SQL)
ROLLBACK TRANSACTION (Transact-SQL)