如果在指定数据库内存在最旧的活动事务和最旧的分布和非分布式复制事务,则显示与之相关的信息。只有当存在活动事务或数据库包含复制信息时,才显示结果。如果没有活动事务,就显示信息性消息。
DBCC OPENTRAN
( { 'database_name' | database_id} )
[ WITH TABLERESULTS
[ , NO_INFOMSGS ]
]
'database_name'
是显示其中的最旧事务信息的数据库名称。数据库名称必须符合标识符的规则。有关更多信息,请参见使用标识符。
database_id
是要显示其中的最旧事务信息的数据库标识 (ID) 号。通过使用 DB_ID 函数获得数据库 ID。
WITH TABLERESULTS
以报表形式指定结果以便可以装载到表中。使用此选项创建结果表,可以将该结果表插入到表中以进行比较。未指定此选项时,对结果进行格式化以增加可读性。
NO_INFOMSGS
禁止显示所有信息性消息。
如果既没有指定 database_name 也没有指定 database_id,则默认为当前数据库。
使用 DBCC OPENTRAN 确定打开的事务是否存在于日志中。使用 BACKUP LOG 语句时,只可以截断日志的非活动部分;打开的事务可以导致日志不能完全地截断。在 Microsoft® SQL Server™ 的早期版本中,若要清除日志中的未提交事务,必须注销所有用户或关闭并重新启动服务器。如有必要,可以使用 DBCC OPENTRAN 标识并终止打开的事务(通过从 sp_who 输出中获得系统进程 ID)。
如果没有打开的事务,DBCC OPENTRAN 显示以下结果集:
No active open transactions.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC OPENTRAN 权限默认授予 sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员且不可转让。
下例获得当前数据库和 pubs 数据库的事务信息。
-- Display transaction information only for the current database.相关文章
DBCC OPENTRAN
GO
-- Display transaction information for the pubs database.
DBCC OPENTRAN('pubs')
GO