CREATE XADATASOURCE 语句

使用 CREATE XADATASOURCE 语句创建新的兼容 XA 的数据源并为其在 sysxadatasources 系统目录表中创建一个条目。该语句是 SQL ANSI/ISO 标准的扩展。

语法

元素 描述 限制 语法
xa_source 此处为新的 XA 数据源声明的名称 sysxadatasources 中的 XA 数据源名称中必须是唯一的 标识符
xa_type 现有 XA 数据源类型的名称 必须已经存在于 sysxasourcetypes 系统目录表的数据库中 标识符

用法

符合 XA 标准的数据源是符合 X/Open DTP XA 标准的外部数据源,用于管理事务管理器和资源管理器之间的交互。要在数据库中注册符合 XA 的数据源,需要执行以下两条 SQL 语句:
  • 首先通过使用 CREATE XADATASOURCE 语句创建一个或多个符合 XA 的数据类型。
  • 然后用 CREATE XADATASOURCE 语句创建一个或多个符合 XA 数据源的实例。
您可以使用两阶段提交协议将 XA 数据源中的事务与 GBase 8s 事务集成,以确保事务在多个数据库之间一致提交或回滚,并在同一全局事务中管理多个外部 XA 数据源。

高可用集群的辅助服务器上不支持 CREATE XADATASOURCE 语句。

任何用户都可以根据数据库是否符合 ANSI 的状态创建遵循所有者命名规则标准的 XA 数据源。只有使用事务日志记录的数据库才支持 X/Open DTP XA 标准。

如果您包含了可选的 IF NOT EXISTS 关键字,则如果它指定名称的 XA 数据源已在当前数据库中注册,则数据库服务器不会执行任何操作(而不是向应用程序发送异常)。

XA 数据源类型和 XA 数据源实例都会指定到一个数据库。要支持分布式事务,必须在多个与外部 XA 数据源交互的数据库中创建它们。

以下语句创建一个新的 XA 数据源实例,它的名称为 gbasedbt.NewYork ,是 gbasedbt.MQSeries 类别。
CREATE XADATASOURCE gbasedbt.NewYork USING gbasedbt.MQSeries;
SQL 语句在 XA 环境中无效
当您在尝试在 X/Open 分布式事务处理环境中执行以下任何语句时, GBase 8s 数据库服务器发出错误 -701 :
  • CLOSE DATABASE
  • CREATE DATABASE
  • DROP DATABASE
  • SET LOG
  • SAVEPOINT
  • RELEASE SAVEPOINT
  • ROLLBACK TO SAVEPOINT
在 XA 环境中,您可以在 xa_open 调用指定当前数据库后执行一个 DATABASE 语句。但是,当选择了该数据库后,在同一会话中不能有其它 DATABASE 语句。如果您创建执行第二个 DATABASE 语句,DATABASE 语句发生错误 -701 并失败。