SQL Server: ¿las transacciones se retrotraen por error?

Tenemos una aplicación de cliente que ejecuta algunos SQL en un SQL Server 2005 como el siguiente:

BEGIN TRAN;
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
COMMIT TRAN;

Es enviado por un comando de cadena larga.

Si una de las inserciones falla, o si falla alguna parte del comando, ¿SQL Server revierte la transacción? Si no se deshace, ¿tengo que enviar un segundo comando para revertirlo?

Puedo dar detalles sobre la API y el idioma que estoy usando, pero creo que SQL Server debería responder de la misma manera en cualquier idioma.

Respuestas a la pregunta(5)

Su respuesta a la pregunta