使用 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
并失败。