您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

sp_transactions

语法


sp_transactions ["xid", <xid_value>] | 
	["state", {"heuristic_commit" | "heuristic_abort" 
	| "prepared" | "indoubt"} [, "xactname"]] |
	["gtrid", <gtrid_value>]

参数

<xid_value>

是 master.dbo.systransactions 的 xactname 列中的事务名称。

<gtrid_value>

是由 SAP ASE 服务器协调的事务的全局事务 ID 名称。

示例

示例 1

显示有关所有活动事务的一般信息:


sp_transactions

xactkey                        type   coordinator starttime         state
   connection dbid spid loid failover srvname  namelen  xactname
------------------------------ ----   ----------- ----------------  --------- 
   ---------- ---- ---- ---- -------- -------- -------  -------------------
0x00000b1700040000dd6821390001 Local    None        Jun 1 1999 3:47PM Begun
   Attached       1   1    2 Resident Tx       NULL     17
$user_transaction
0x00000b1700040000dd6821390001 Remote   ASTC        Jun 1 1999 3:47PM Begun
   NA             0   8    0 Resident Tx        caserv2 108

00000b1700040000dd6821390001-aa01f04ebb9a-00000b1700040000dd6821390001-aa0
1f04ebb9a-caserv1-caserv1-0002

示例 2

显示指定事务的详细信息:


sp_transactions "xid", "00000b1700040000dd6821390001-aa01f04ebb9a-00000b1700040000dd6821390001-aa01f04ebb9a-caserv1-caserv1-0002"

xactkey                        type        coordinator starttime        state
   connection dbid spid loid  failover  srvname  namelen  xactname
      commit_node            parent_node
gtrid
------------------------------ ----------- ----------- ----------       -------     ---------- ------ ------ ---------  -------- --------- ---------- -------
      -------------   -------------  -------------
0x00000b2500080000dd6821960001 External    ASTC       Jun 1 1999 3:47PM  Begun
   Attached      1    8  139  Resident  Tx       NULL         108

00000b1700040000dd6821390001-aa01f04ebb9a-00000b1700040000dd6821390001-aa0
1f04ebb9a-caserv1-caserv1-0002

caserv1            caserv1
00000b1700040000dd6821390001-aa01f04ebb9a

示例 3

显示处于“就绪”状态的事务的一般信息:


sp_transactions "state", "prepared"

示例 4

只显示处于“就绪”状态的事务的事务名称:


sp_transactions "state", "prepared", "xactname"

示例 5

显示具有指定全局事务 ID 的事务的状态信息:


sp_transactions "gtrid", "00000b1700040000dd6821390001-aa01f04ebb9a"

xactkey                        type    coordinator starttime          state
   connection dbid spid loid failover srvname  namelen   xactname
commit_node
parent_node
------------------------------ ------- ---------- ----------------- -----------
<h2>    ---------- ------ ------ ----------- ------------ --------------- -------</h2>
-------------
0x00000b1700040000dd6821390001 Local   None        Jun 1 1999 3:47PM  Begun
   Attached     1     1    2  Resident Tx      NULL       17  $user_transaction
caserv1
caserv1

用法

使用 sp_transactions 时,还存在一些其它注意事项:

  • sp_transactions 通过解释 systransactions 表中的数据来显示有关活动事务的信息。systransactions 本身包含syscoordinations 表中的数据,以及内存中有关活动事务的信息。

  • 不带关键字的 sp_transactions 显示有关所有活动事务的信息。

  • 带有 xid 关键字的 sp_transactions 只显示指定事务的 gtrid、commit_node 和 parent_node 列。

  • 带有 state 关键字的 sp_transactions 只显示处于指定状态的活动事务的信息。

  • 既带有 xid 又带有 xactname 的 sp_transactions 只显示处于指定状态的事务的事务名称。

  • 带有 gtrid 关键字的 sp_transactions 只显示具有指定全局事务 ID 的事务的信息。

  • sp_transactions 可以替代 XALibrary 和 XAServer 产品提供的 sp_xa_scan_xact 过程。

  • sp_transactions 输出的列为:

    说明
    xactkey 该列显示 SAP ASE 服务器用于标识事务的内部事务键。
    type 该列指示事务的类型:
    · “Local”表示该事务是用 begin transaction 语句在本地 SAP ASE 服务器上显式启动的。
    · “Remote”表示事务在远程 SAP ASE 服务器上执行。
    · “External”表示该事务有一个与其相关联的外部事务协调器。例如,由远程 SAP ASE 服务器、MSDTC 或 X/Open XA 事务管理器协调的事务标记为“External”。
    · “Dtx_State”是由 SAP ASE 服务器协调的分布式事务的一种特殊状态。它表示已在本地服务器上提交或中止了某个事务,但 SAP ASE 服务器无法在远程参与者上解析该事务的分支。如果 SAP ASE 服务器失去了与它正在协调的服务器的联系,则可能会出现这种情况。
    coordinator 该列指示用于管理分布式事务的方法或协议。协调器的值为:
    · None – 事务不是分布式事务,因此不需要协调协议。
    · ASTC – 事务通过 SAP ASE 事务协调服务进行协调。
    · XA – 事务是由符合 X/Open XA 的事务管理器通过 SAP ASE XA-Library 接口协调的。这样的事务管理器包括 Encina、CICS 和 Tuxedo,等等。
    · DTC – 事务是由 MSDTC 协调的。
    · SYB2PC – 事务是使用 Sybase 两阶段提交协议协调的。
    starttime 该列显示该事务启动的时间。
    state 该列指示运行 sp_transactions 时该事务的状态:
    · Begun – 事务已经启动,但尚未执行任何更新。
    ·Done Command – 事务已完成一个更新命令。
    ·Done – X/Open XA 事务已修改完数据。
    ·Prepared
    ·事务已成功准备就绪。
    ·In Command – 事务当前正在修改数据。
    ·In Abort Cmd – 已中止了事务中当前命令的执行。
    ·Committed – 已成功提交了事务,并且已写入了提交日志记录。
    ·In Post Commit – 已成功提交了事务,但当前正在释放事务资源。
    ·In Abort Tran – 正在中止事务。这可能是由显式执行某个命令导致的,也可能是因系统故障导致的。
    ·In Abort Savept – 正在将事务回退到一个保存点。
    ·Begun-Detached – 事务已开始,但当前没有线程附加到该事务。
    ·Done Cmd-Detached – 事务已修改完数据,而且当前没有线程附加到该事务。
    ·Done-Detached – 事务已修改完数据,而且当前没有线程附加到该事务。
    ·Prepared-Detached – 事务已成功准备就绪,而且当前没有线程附加到该事务。
    ·Heur Committed – 已使用 dbcc complete_xact 命令尝试提交了事务。
    ·Heur Rolledback – 已使用 dbcc complete_xact 命令尝试回退了事务。
    connection 该列指示该事务当前是否与线程相关联:
    ·“Attached”表示该事务有相关联的控制线程。
    ·“Detached”表示当前没有线程与该事务相关联。一些外部事务管理器(例如,CICS 和 TUXEDO)使用 X/Open XA“suspend”和“join”语义将不同的线程与同一事务相关联。
    dbid 该列显示启动该事务的数据库的数据库 ID。
    spid 该列指示与该事务相关联的服务器进程 ID。如果事务状态为“Detached”,则“spid”值为 0。
    loid 该列指示 master.dbo.systransactions 中的唯一锁所有者 ID。
    failover 该列指示该事务的故障切换状态:
    ·“Resident Tx”表示事务已启动,并且正在同一服务器上执行。在正常工作条件下,不使用 SAP ASE 高可用性功能的系统上将显示“Resident Tx”。
    ·在已故障切换到辅助协同服务器后,将显示“Failed-over Tx”。“Failed-over Tx”表示事务原来在主服务器上启动并达到就绪状态,但被自动迁移到辅助协同服务器上(例如,因为主服务器发生了系统故障)。就绪事务的迁移对于外部协调服务来说是透明的。
    ·“Tx by Failover-Conn”表示曾尝试在指定的服务器上启动该事务,但却在辅助协同服务器上启动了该事务。在原服务器发生故障切换时,可能会出现这种情况。
    srvname 该列显示正在执行该事务的远程服务器的名称。此列仅对远程事务有意义。对于本地和外部事务,srvname 为空。
    namelen 该列显示 <xactname> 值的总长度。
    · 是事务名称。对于本地事务,事务名称可能被定义为 begin transaction 命令的一部分。外部事务管理器以多种格式提供唯一的事务名称。例如,符合 X/Open XA 要求的事务管理器提供的事务 ID(<xid>)由一个全局事务标识符和一个分支限定符组成,两者都存储在 <xactname> 中。
    gtrid 对于由 SAP ASE 服务器协调的事务,该列显示全局事务 ID。事务分支是同一分布式事务的一部分,它们共享同一个 gtrid。可以使用特定的 gtrid 和 sp_transactionsgtrid 关键字来确定同一分布式事务中其它事务分支的状态。
    sp_transactions 不能显示具有外部事务协调器的事务的 gtrid。对于由符合 X/Open XA 要求的事务管理器、MSDTC 或 SYB2PC 来协调的事务,gtrid 列将显示外部事务协调器提供的完整事务名称。
    commit_node 对于由 SAP ASE 服务器协调的事务,该列显示执行该分布式事务的最外层块的服务器。这个最外层块最终确定所有下级事务的提交状态。
    对于不是由 SAP ASE 服务器协调的事务,commit_node 显示以下值之一:
    ·<server_name> – 提交节点或父节点是具有指定 <server_name> 的 SAP ASE 服务器。
    ·XATM – 提交节点或父节点是符合 X/Open XA 的事务管理器。
    ·MSDTCTM – 提交节点或父节点是 MSDTC。
    ·SYB2PCTM – 事务是使用 SYB2PC 协议协调的。

    |parent_node|对于由 SAP ASE 服务器协调的事务,该列显示在本地服务器上协调外部事务的服务器。
    对于不是由 SAP ASE 服务器协调的事务,parent_node 将显示与 commit_node 相同的值。
    注意
    commit_node 和 parent_node 的值可能会因分布式事务中的层次级别而有所不同。|