Compartir a través de


Administración de transacciones (XMLA)

Cada comando XML for Analysis (XMLA) enviado a una instancia de Microsoft SQL Server Analysis Services se ejecuta dentro del contexto de una transacción en la sesión implícita o explícita actual. Para administrar cada una de estas transacciones, use los comandos BeginTransaction, CommitTransaction y RollbackTransaction . Mediante estos comandos, puede crear transacciones implícitas o explícitas, cambiar el recuento de referencias de transacciones, así como iniciar, confirmar o revertir transacciones.

Transacciones implícitas y explícitas

Una transacción es implícita o explícita:

Transacción implícita
Analysis Services crea una transacción implícita para un comando XMLA si el BeginTransaction comando no especifica el inicio de una transacción. Analysis Services siempre confirma una transacción implícita si el comando se ejecuta correctamente y revierte una transacción implícita si se produce un error en el comando.

Transacción explícita
Analysis Services crea una transacción explícita si el BeginTransaction comando se inicia de una transacción. Sin embargo, Analysis Services solo confirma una transacción explícita si se envía un CommitTransaction comando y revierte una transacción explícita si se envía un RollbackTransaction comando.

Además, Analysis Services revierte las transacciones implícitas y explícitas si finaliza la sesión actual antes de que se complete la transacción activa.

Transacciones y recuentos de referencias

Analysis Services mantiene un recuento de referencias de transacciones para cada sesión. Sin embargo, Analysis Services no admite transacciones anidadas en que solo se mantiene una transacción activa por sesión. Si la sesión actual no tiene una transacción activa, el recuento de referencias de transacción se establece en cero.

En otras palabras, cada BeginTransaction comando incrementa el recuento de referencias por uno, mientras que cada CommitTransaction comando disminuye el recuento de referencias en uno. Si un CommitTransaction comando establece el recuento de transacciones en cero, Analysis Services confirma la transacción.

Sin embargo, el RollbackTransaction comando revierte la transacción activa independientemente del valor actual del recuento de referencias de transacción. En otras palabras, un único RollbackTransaction comando revierte la transacción activa, independientemente del número BeginTransaction de comandos o CommitTransaction comandos enviados, y establezca el recuento de referencias de transacción en cero.

Inicio de una transacción

El BeginTransaction comando inicia una transacción explícita en la sesión actual e incrementa el recuento de referencias de transacciones de la sesión actual en uno. Todos los comandos subsiguientes se consideran dentro de la transacción activa, hasta que se envían comandos suficientes CommitTransaction para confirmar la transacción activa o se envía un único RollbackTransaction comando para revertir la transacción activa.

Confirmar una transacción

El CommitTransaction comando confirma los resultados de los comandos que se ejecutan después de ejecutar el BeginTransaction comando en la sesión actual. Cada CommitTransaction comando disminuye el recuento de referencias de las transacciones activas en una sesión. Si un CommitTransaction comando establece el recuento de referencias en cero, Analysis Services confirma la transacción activa. Si no hay ninguna transacción activa (es decir, el recuento de referencias de transacción para la sesión actual ya está establecido en cero), un CommitTransaction comando produce un error.

Revertir una transacción

El RollbackTransaction comando revierte los resultados de los comandos que se ejecutan después de ejecutar el BeginTransaction comando en la sesión actual. El RollbackTransaction comando revierte la transacción activa, independientemente del recuento de referencias de transacción actual y establezca el recuento de referencias de transacción en cero. Si no hay ninguna transacción activa (es decir, el recuento de referencias de transacción para la sesión actual ya está establecido en cero), un RollbackTransaction comando produce un error.

Véase también

Desarrollo con XMLA en Analysis Services