DBCC OPENTRAN (Transact-SQL)

如果在指定数据库内存在最早的活动事务和最早的分布式和非分布式复制事务,则显示与之有关的信息。仅当存在活动事务或数据库包含复制信息时,才显示结果。如果没有活动事务,就显示信息性消息。

ms182792.note(zh-cn,SQL.90).gif注意:
非 SQL Server 发布服务器不支持 DBCC OPENTRAN。

主题链接图标Transact-SQL 语法约定

语法

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)

帮助和信息

获取 SQL Server 2005 帮助