Retroceso de transacciones en SQL Server 2005

SQL Server 2005 recién instaurado la manera de revertir las transacciones en SQL Server 2005

SET XACT_ABORT ON

cuando XACT_ABORT está en. Las declaraciones de T-SQL de forma automática revertir la transacción cuando el error se produjo en los estados.

SET XACT_ABORT ON

USO Emp
Begin Tran
Insertar en los valores EmpInfo(1)
Insertar en los valores EmpInfo(1) — Esta declaración se generará el error de clave primaria
Insertar en los valores EmpInfo(2)
COMMIT TRAN

La primera línea de la declaración se ejecutará sin errores. El error clave primaria aumentará en la segunda línea. Pero la transacción bloque entero no se compromete porque los XACT_ABORT en el.

1 comentario al retroceder la transacción en SQL Server 2005

  • noreply@blogger.com (Todd)

    Tenga en cuenta que XACT_ABORT termina el actual lote * *, No todo el comando. Los lotes se separan con la palabra clave GO. La ejecución continuará en el comienzo de la siguiente lote.

    Esta característica también se encuentra en SQL Server 2000, aunque se comporta de forma ligeramente diferente para varios errores.

    En SQL 2000, hay casos en los XACT_ABORT no deshacer la transacción de forma automática.

    Por ejemplo:

    La inserción en un nombre de columna no válido.

    La inserción en una clave principal con IDENTITY_INSERT OFF.

    La ejecución de una sentencia SELECT que utiliza una UDF no existe.

    Este tipo de errores son por lo general debido a un comando mal escrito, por lo que no se produzcan en el funcionamiento del día a día de su programa a menos que alguien altera el esquema. Pero me cuenta de sus posibilidades durante la creación de scripts de actualización de bases de datos cuando se implementa una nueva versión de un proyecto, sólo en el despliegue caso no salen según lo planeado.

    Hay maneras de manejar estos errores. Su envío debe estar en el lote de realizar las declaraciones DML. Después de que el lote (después de la palabra clave GO) se puede comprobar la @ @ TRANCOUNT para ver si es mayor que cero y actuar en consecuencia. Por lo general, ROLLBACK de la transacción.

    Las transacciones pueden abarcar los lotes, para que pueda ejecutar un retroceso de un lote posterior.

Deja una respuesta

Usted puede utilizar estas etiquetas HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>