Cause

Either the required JDBC distributed transaction script, (xa_install.sql)wasn't run or it wasn't run against the master db.

Environment

Windows and MS SQL

Diagnosing the problem

When the JDBC distributed transaction script (xa_install.sql) is run against the master db, the script installs sqljdbc_xa.dll as an extended stored procedure and creates the SqlJDBCXAUser role in the Master database. If the dll or role are missing from the master DB, this would confirm the script was not run, or not run against the master db.

Tip: Installation procedures for JDBC settings can vary by release. See the Microsoft website for full details.

Copy the sqljdbc_xa.dll from the JDBC installation directory to the binn folder of the instance, although a pre-2.0 version of the driver also functions correctly from the tools\binn folder. For the 32-bit version of Microsoft SQL Server , use the sqljdbc_xa.dll file in the x86 folder. For the 64-bit version of Microsoft SQL Server, use the sqljdbc_xa.dll file in the x64 folder.

Log on as the sa administrator or as a user with equivalent permissions and execute the database script xa_install.sql on the master database on every SQL Server instance that will participate in distributed transactions.

This script installs sqljdbc_xa.dll as an extended stored procedure and creates the SqlJDBCXAUser role in the Master database.

Add each database account (ce_db_user) that Content Engine uses to access SQL Server to the SqlJDBCXAUser role. This action grants permissions to those accounts to participate in distributed transactions with the JDBC driver.