Recuperar hasta una transacción marcada

Este tema sólo es pertinente para las bases de datos que contienen transacciones marcadas y utilizan el modelo de recuperación completa o el modelo de recuperación optimizado para cargas masivas de registros.

Para obtener información sobre los requisitos para restaurar a un punto de recuperación concreto, vea Restaurar bases de datos a un punto de una copia de seguridad.

SQL Server permite insertar marcas con nombre en el registro de transacciones para recuperar hasta esa marca específica. Las marcas del registro son específicas de la transacción y se insertan sólo si se confirman sus transacciones asociadas. Como resultado, las marcas se pueden asociar a un trabajo específico y se podrá recuperar hasta un punto que incluya o excluya ese trabajo.

Antes de insertar marcas con nombre en el registro de transacciones, tenga en cuenta lo siguiente:

  • Debido a que las marcas de transacción consumen espacio del registro, utilícelas sólo para aquellas transacciones que tengan una función importante en la estrategia de recuperación de la base de datos.

  • Después de la confirmación de una transacción marcada, se inserta una fila en la tabla logmarkhistory de msdb.

  • Si la transacción marcada abarca varias bases de datos del mismo servidor de base de datos o de diferentes servidores, las marcas se registran en los registros de todas las bases de datos afectadas. Para obtener más información, vea Usar transacciones marcadas (modelo de recuperación completa).

[!NOTA]

Para obtener más información acerca de cómo marcar transacciones, vea Usar transacciones marcadas (modelo de recuperación completa).

Sintaxis de Transact-SQL para insertar marcas con nombre en un registro de transacciones

Para insertar marcas en los registros de transacciones, utilice la instrucción BEGIN TRANSACTION y la cláusula WITH MARK [description]. La marca recibe el mismo nombre que la transacción. La descripción (description) es opcional y es un texto descriptivo de la marca, no su nombre. Por ejemplo, el nombre de la transacción y de la marca que se crea en la siguiente instrucción BEGIN TRANSACTION es Tx1:

BEGIN TRANSACTION Tx1 WITH MARK 'not the mark name, just a description'  

El registro de transacciones registra el nombre de la marca (nombre de la transacción), su descripción, la base de datos, el usuario, la información de datetime y el número de secuencia de registro (LSN). La información de datetime se utiliza con el nombre de la marca para identificar la marca de forma única.

Para obtener información sobre cómo insertar una marca en una transacción que abarca varias bases de datos, vea Usar transacciones marcadas (modelo de recuperación completa).

Sintaxis de Transact-SQL para recuperar hasta una marca

Si el destino es una transacción marcada con la instrucción RESTORE LOG, puede usar una de las cláusulas siguientes para detenerse en la marca o inmediatamente antes:

  • Use la cláusula WITH STOPATMARK = '<mark_name>' para especificar que la transacción marcada es el punto de recuperación.

    STOPATMARK pone al día hasta la marca e incluye la transacción marcada en la puesta al día.

  • Use la cláusula WITH STOPBEFOREMARK = '<mark_name>' para especificar que el registro inmediatamente anterior a la marca es el punto de recuperación.

    STOPBEFOREMARK pone al día hasta la marca y excluye la transacción marcada de la puesta al día.

Las opciones STOPATMARK y STOPBEFOREMARK admiten una cláusula AFTER datetime opcional. Cuando se utiliza datetime, no es necesario que los nombres de marca sean únicos.

Si se omite AFTER datetime, la puesta al día se detiene en la primera marca que tenga el nombre especificado. Si se especifica AFTER datetime, la puesta al día se detiene en la primera marca que tenga el nombre especificado, ya sea en datetime o después.

[!NOTA]

Al igual que en las operaciones de restauración a un momento dado, la recuperación hasta una marca no está permitida cuando la base de datos está realizando operaciones de registro masivo.

Para restaurar una transacción marcada

Cómo restaurar una base de datos en una transacción marcada (SQL Server Management Studio)

RESTORE (Transact-SQL)

Preparar las copias de seguridad de registros

En este ejemplo, una estrategia correcta de copia de seguridad para estas bases de datos relacionadas sería:

  1. Utilizar el modelo de recuperación completa para ambas bases de datos.

  2. Crear una copia de seguridad completa de cada base de datos.

    La copia de seguridad de las bases de datos se puede realizar de forma secuencial o simultánea.

  3. Antes de realizar la copia de seguridad del registro de transacciones, marque una transacción que se ejecute en todas las bases de datos. Para obtener más información acerca de cómo crear transacciones marcadas, vea Usar transacciones marcadas (modelo de recuperación completa).

  4. Realizar una copia de seguridad del registro de transacciones en ambas bases de datos.

Recuperar la base de datos a una transacción marcada

Para restaurar la copia de seguridad

  1. Cree copias del final del registro de las bases de datos no dañadas si es posible.

  2. Restaure la copia de seguridad completa de base de datos más reciente de cada una de las bases de datos.

  3. Identifique la transacción marcada más reciente que esté disponible en todas las copias de seguridad de los registros de transacciones. Esta información se almacena en la tabla logmarkhistory de la base de datos msdb de cada servidor.

  4. Identifique qué copias de seguridad de registros de todas las bases de datos relacionadas contienen esta marca.

  5. Restaure cada una de las copias de seguridad de registros y deténgase en la transacción marcada.

  6. Recupere cada base de datos.