共用方式為


DBCC OPENTRAN (Transact-SQL)

DBCC OPENTRAN 有助於識別可能會阻礙截斷記錄的使用中交易。 DBCC OPENTRAN 會顯示在指定之資料庫的交易記錄內,最舊的使用中交易以及最舊的分散式和非分散式複寫交易 (如果有) 的相關資訊。 當記錄內有使用中交易或是資料庫包含複寫資訊時,才會顯示結果。 如果記錄內沒有任何使用中交易,就會顯示參考用訊息。

注意

非 SQL Server 發行者不支援 DBCC OPENTRAN。

適用於:SQL Server (SQL Server 2008 至目前版本)。

主題連結圖示 Transact-SQL 語法慣例

語法

DBCC OPENTRAN 
[ 
    ( [ database_name | database_id | 0 ] ) ]
    { [ WITH TABLERESULTS ]
      [ , [ NO_INFOMSGS ] ]
    }
] 

引數

  • database_name | database_id| 0
    這是要顯示最舊交易資訊之資料庫的名稱或識別碼。 若未指定,或指定 0,就會使用目前的資料庫。 資料庫名稱必須符合識別碼的規則。

  • TABLERESULTS
    指定可載入資料表的表格式格式結果。 請利用這個選項來建立結果資料表,這些結果可插入資料表以進行比較。 當未指定這個選項時,會將結果格式化,以便閱讀。

  • NO_INFOMSGS
    隱藏所有參考訊息。

備註

請利用 DBCC OPENTRAN 來判斷開啟的交易是否在交易記錄內。 當您使用 BACKUP LOG 陳述式時,只能截斷記錄非使用中的部分。開啟的交易可以防止記錄徹底截斷。 若要識別開啟的交易,請利用 sp_who 來取得系統處理序識別碼。

結果集

當沒有開啟的交易時,DBCC OPENTRAN 會傳回下列結果集:

No active open transactions.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

權限

需要 sysadmin 固定伺服器角色或 db_owner 固定資料庫角色中的成員資格。

範例

A.傳回最舊的使用中交易

下列範例會取得目前資料庫的交易資訊。 結果可能各不相同。

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.

注意

「UID (使用者識別碼)」結果無意義而且將會在 SQL Server 的未來版本中移除。

B.指定 WITH TABLERESULTS 選項

下列範例會將 DBCC OPENTRAN 命令的結果載入暫存資料表中。

-- Create the temporary table to accept the results.
CREATE TABLE #OpenTranStatus (
   ActiveTransaction varchar(25),
   Details sql_variant 
   );
-- Execute the command, putting the results in the table.
INSERT INTO #OpenTranStatus 
   EXEC ('DBCC OPENTRAN WITH TABLERESULTS, NO_INFOMSGS');

-- Display the results.
SELECT * FROM #OpenTranStatus;
GO

請參閱

參考

BEGIN TRANSACTION (Transact-SQL)

COMMIT TRANSACTION (Transact-SQL)

DBCC (Transact-SQL)

DB_ID (Transact-SQL)

ROLLBACK TRANSACTION (Transact-SQL)