配置 XA 事务

您必须在安装 Microsoft SQL Server 数据库之后,启动服务器之前配置 XA 事务。SQL Server JDBC 驱动程序为提供对 Java Platform, Enterprise Edition/JDBC 2.0 可选分布式事务的支持。从 SQLServerXADataSource 类获取的 JDBC 连接可参与标准分布式事务处理环境,如 Java 平台、Enterprise Edition (Java EE) 应用程序服务器。

关于此任务

配置 XA 事务失败可能会在服务器启动时导致以下错误:javax.transaction.xa.XAException: com.microsoft.sqlserver.jdbc.SQLServerException: Failed to create the XA control connection. Error: "Could not find stored procedure 'master..xp_sqljdbc_xa_init_ex'."..

在 Service Manager 中,应将 MS DTC 服务标记为“自动”,以确保在 SQL Server 服务启动时运行 MS DTC 服务。

过程

  1. 要为 XA 事务启用 MS DTC,必须遵循下列步骤:
    在 Windows XP 和 Windows Server 2003 上:
    1. 选择控制面板 > 管理工具 > 组件服务
    2. 选择组件服务 > 计算机,然后右键单击我的电脑,然后选择属性
    3. 单击 MSDTC 选项卡,然后单击安全性配置
    4. 选中启用 XA 事务复选框,然后单击确定。这将使 MS DTC 服务重新启动。
    5. 再次单击确定以关闭属性窗口,然后关闭组件服务
    6. 重新启动 SQL Server 以确保它与 MS DTC 更改同步。
    在 Windows Vista、Windows 7、Windows Server 2008 R2 或 Windows Server 2012 上:
    1. 选择控制面板 > 管理工具 > 组件服务
    2. 选择组件服务 > 计算机 > 我的电脑 > Distributed Transaction Coordinator
    3. 右键单击本地 DTC,然后选择属性
    4. 单击本地 DTC 属性窗口上的安全性选项卡。
    5. 选中启用 XA 事务复选框,然后单击确定。这将重新启动 MS DTC 服务。
    6. 再次单击确定以关闭“属性”窗口,然后关闭“组件服务”。
    7. 重新启动 SQL Server 以确保它与 MS DTC 更改同步。
  2. 配置 JDBC 分布式事务组件:
    1. 如果您尚未安装 IBM® Business Process Manager,请从 Microsoft Web 站点下载 Microsoft SQL Server JDBC Driver 4.0,并将其解压至任意文件夹。
    2. 如果已安装 IBM BPM,请转至 bpm_install_root\jdbcdrivers\SQLServer\xa,以获取以下步骤中需要的文件:
      • sqljdbc_xa.dll 文件复制到 SQL Server 计算机的 Binn 目录(对于缺省 SQL Server 安装,该位置为 C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn)。如果将 XA 事务与 32 位 SQL Server 一起使用,请使用 x86 文件夹中的 sqljdbc_xa.dll 文件,即使该 SQL Server 安装在 x64 处理器上也如此。如果将 XA 事务与 x64 处理器上的 64 位 SQL Server 一起使用,那么请使用 x64 文件夹中的 sqljdbc_xa.dll 文件。
      • 在 SQL Server 上运行 xa_install.sql 数据库脚本。例如,从命令提示符中运行 sqlcmd -i xa_install.sql。该脚本会安装由 sqljdbc_xa.dll 调用的扩展存储过程。这些扩展存储过程会针对 Microsoft SQL Server JDBC 驱动程序实施分布式事务和 XA 支持。您将需要以 SQL Server 实例管理员的身份运行该脚本。您可以忽略有关无法删除不存在的过程的错误。
  3. 遵循以下步骤来配置 Windows 认证:
    • 找到 sqljdbc_auth.dll 文件。 如果您已安装 IBM BPM,请转至 BPM_install_root\jdbcdrivers\SQLServer\auth 目录以获取此文件。如果您尚未安装 IBM BPM,请在下载的 Microsoft JDBC 驱动程序包中找到 DLL 文件。
    • sqljdbc_auth.dll 文件复制到 SQL Server 计算机的 Binn 目录(对于缺省 SQL Server 安装,该位置为 C:/Program Files/Microsoft SQL Server/MSSQL10_50.MSSQLSERVER/MSSQL/Binn)。如果您的 JRE 是 32 位,请使用 x86 文件夹中的 sqljdbc_auth.dll 文件,即使该 SQL Server 安装在 x64 处理器上也如此。如果您的 JRE 是 64 位,请使用 x64 文件夹中的 sqljdbc_auth.dll 文件。

下一步做什么

在配置 XA 事务之后,启动服务器之前,必须使用以下步骤配置您的 TCP/IP 连接:
  1. 从“开始”菜单中依次单击 Microsoft SQl Server 2008 R2 > 配置工具 > SQL Server 配置管理器
  2. 展开 SQl Server 网络配置 > SQL2008 协议
  3. 找到右侧的 TCP/IP
  4. 双击 TCP/IP 并在协议选项卡下启用此协议。
  5. 双击 IP 地址选项卡,为各个已配置的 IP 地址启用 TCP 端口。
在某些情况中,您还可以在 IBM BPM SystemOut.logs 中看到以下锁定超时错误:
Lock request time out period exceeded.; nested exception
is com.microsoft.sqlserver.jdbc.SQLServerException:
  Lock request time out period exceeded.
要防止发生锁定超时(或者在锁定超时发生之后进行解决),您可以在事务服务上添加定制属性 ENABLE_XARESOURCE_TIMEOUT。事务服务将在全局事务中列出 XA 资源时为其提供相应的超时值。有关 ENABLE_XARESOURCE_TIMEOUT 定制属性的信息可在主题事务服务定制属性中找到。