Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las transacciones son grupos de operaciones que se combinan en unidades lógicas de trabajo. Se usan para controlar y mantener la coherencia y la integridad de cada acción de una transacción, a pesar de los errores que puedan producirse en el sistema,
Con el controlador JDBC de Microsoft SQL Server 2005, las transacciones pueden ser locales o distribuidas. Las transacciones también pueden usar niveles de aislamiento. Para obtener más información sobre los niveles de aislamiento compatibles con el controlador JDBC, consulte Descripción de los niveles de aislamiento.
Usar transacciones locales
Se considera que una transacción es local cuando es de una sola fase y la base de datos la trata directamente. El controlador JDBC es compatible con las transacciones locales mediante el uso de varios métodos de la clase SQLServerConnection, incluidos setAutoCommit, commit y rollback. Las transacciones locales normalmente las administran explícitamente la aplicación o el servidor de aplicaciones J2EE de forma automática.
El siguiente ejemplo realiza una transacción local que se compone de dos instrucciones separadas en el bloque try. Las instrucciones se ejecutan contra la tabla Production.ScrapReason en la base de datos de ejemplo AdventureWorks SQL Server 2005 y se confirman si no se lanza ninguna excepción. El código en el bloque catch revierte la transacción si se lanza una excepción.
public static void executeTransaction(Connection con) {
try {
//Switch to manual transaction mode by setting
//autocommit to false. Note that this starts the first
//manual transaction.
con.setAutoCommit(false);
Statement stmt = con.createStatement();
stmt.executeUpdate("INSERT INTO Production.ScrapReason(Name) VALUES('Wrong size')");
stmt.executeUpdate("INSERT INTO Production.ScrapReason(Name) VALUES('Wrong color')");
con.commit(); //This commits the transaction and starts a new one.
stmt.close(); //This turns off the transaction.
System.out.println("Transaction succeeded. Both records were written to the database.");
}
catch (SQLException ex) {
ex.printStackTrace();
try {
con.rollback();
System.out.println("Transaction failed. No records were written to the database.");
}
catch (SQLException se) {
se.printStackTrace();
}
}
}
Usar transacciones distribuidas
Una transacción distribuida es una transacción que actualiza datos en dos o más bases de datos conectadas a una red manteniendo las propiedades atómicas, coherentes, aisladas y durables (ACID) del procesamiento de la transacción. La compatibilidad con las transacciones distribuidas se incluyó en la API de JDBC de la especificación API Opcional de JDBC 2.0. La administración de transacciones distribuidas normalmente se realiza de forma automática por parte del administrador de transacciones Servicio de Transacciones de Java (JTS) dentro de un entorno de servidor de aplicaciones J2EE. No obstante, el controlador JDBC Microsoft SQL Server 2005 es compatible con las transacciones distribuidas realizadas en cualquier administrador de transacciones compatible con la API de transacciones de Java (JTA).
El controlador JDBC se integra a la perfección con el Coordinador de transacciones distribuidas (MS DTC) de Microsoft para proporcionar una compatibilidad verdadera con las transacciones distribuidas de SQL Server 2000 y SQL Server 2005. MS DTC es una herramienta de transacciones distribuidas proporcionada por Microsoft para sistemas de Microsoft Windows. MS DTC usa tecnología probada de procesamiento de transacciones de Microsoft para proporcionar compatibilidad con características XA tales como el protocolo de confirmación distribuido de dos fases completo y la recuperación de transacciones distribuidas.
Para obtener más información sobre cómo utilizar las transacciones distribuidas, consulte Descripción de las transacciones XA.