Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SE APLICA A: SQL Server Azure SQL Database Azure SQL Data
Warehouse Almacenamiento de datos paralelos
Los pasos para recuperar una operación dependen del tipo de registro:
Nota
Sugerencia
Cuando el final del registro lógico llega al final del archivo de registro físico, las
nuevas entradas del registro se escriben al principio del archivo de registro
físico.
El ciclo se repite indefinidamente, siempre que el final del registro lógico no
alcance el inicio del registro lógico. Si las entradas antiguas se truncan con la
frecuencia suficiente para disponer siempre de espacio para todas las nuevas
entradas de registro que se van a crear hasta el próximo punto de
comprobación, el registro no se llena nunca. Sin embargo, si el final del registro
lógico llega al principio del registro lógico, se produce una de estas dos
situaciones:
Importante
Antes de crear la primera copia de seguridad de registros, debe crear una copia
de seguridad completa, como una copia de seguridad de la base de datos o la
primera de un conjunto completo de copias de seguridad de archivos. La
restauración de una base de datos utilizando únicamente copias de seguridad
de archivos puede llegar a ser un proceso complejo. Por lo tanto, es
recomendable que comience con una copia de seguridad de la base de datos
completa si es posible. Posteriormente, será necesario realizar copias de
seguridad del registro de transacciones con regularidad. De esta forma, no solo
se minimiza el riesgo de pérdida de trabajo, sino que también se permite el
truncamiento del registro de transacciones. Normalmente, el registro de
transacciones se trunca tras cada copia de seguridad de registros convencional.
Importante
Importante
Para obtener más información sobre las copias de seguridad del registro de
transacciones, vea Copias de seguridad del registro de transacciones (SQL
Server).
La cadena de registros
Para restaurar una base de datos al momento del error, es preciso que la cadena
de registros esté intacta. De esta forma, es necesario que una secuencia
ininterrumpida de las copias de seguridad del registro de transacciones se
extienda hasta el momento del error. El lugar en el que esta secuencia de
registros debe comenzar depende del tipo de copias de seguridad de datos que
esté restaurando: de base de datos, parcial o de archivos. En las copias de
seguridad de base de datos o parciales, la secuencia de copias de seguridad de
registros debe extenderse desde el final de la copia de seguridad de base de
datos o parcial. En un conjunto de copia de seguridad de archivos, la secuencia
de copias de seguridad de registros debe comenzar desde el principio del
conjunto completo de copias de seguridad de archivos. Para obtener más
información, vea Aplicar copias de seguridad del registro de transacciones (SQL
Server).
Restaurar copias de seguridad de registros
Sugerencia
registro activo
La parte del archivo de registro desde el MinLSN hasta el último registro escrito
se denomina parte activa del registro o registro activo. Se trata de la sección del
registro necesaria para una recuperación completa de la base de datos. No se
puede truncar ninguna parte del registro activo. Los truncamientos del registro
se deben realizar en las partes del registro anteriores al MinLSN.
El registro activo debe incluir cada una de las partes de todas las transacciones
no confirmadas. Una aplicación que inicia una transacción y no la confirma o la
revierte impide que el motor de base de datos avance hacia el valor de
MinLSN. Esto puede causar dos tipos de problemas:
SE APLICA A: SQL Server Azure SQL Database Azure SQL Data
Warehouse Almacenamiento de datos paralelos
Nota
Es posible que siga habiendo contención de E/S si hay un alto grado de
simultaneidad, especialmente si el búfer de registro se llena más
rápidamente que se vacía.
He aquí algunos casos en los que puede ser beneficioso usar la durabilidad
diferida de transacciones:
SQLCopiar
ALTER DATABASE ... SET DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }
DISABLED
[valor predeterminado] Con esta configuración, todas las transacciones que se
confirman en la base de datos son totalmente durables, independientemente
del nivel de confirmación (DELAYED_DURABILITY= [ON | OFF]). No hay
necesidad de modificar y recompilar el procedimiento almacenado. De esta
forma, puede asegurarse de que la durabilidad diferida nunca ponga datos en
peligro.
ALLOWED
Con esta configuración, la durabilidad de cada transacción se determina en el
nivel de transacción: DELAYED_DURABILITY = { OFF | ON }. Vea Control de nivel
de bloque ATOMIC: procedimientos almacenados compilados de forma
nativa y Control de nivel COMMIT: Transact-SQL para obtener más información.
FORCED
Con esta configuración, cada transacción que se confirma en la base de datos es
durable diferida. Independientemente de que la transacción especifique que es
totalmente durable (DELAYED_DURABILITY = OFF) o no haga especificación
alguna, la transacción es durable diferida. Esta configuración resulta útil cuando
la durabilidad diferida es adecuada para una base de datos y no desea cambiar
ningún código de aplicación.
SQLCopiar
DELAYED_DURABILITY = { OFF | ON }
OFF
[valor predeterminado] La transacción es totalmente durable, salvo que la
opción de base de datos DELAYED_DURABLITY = FORCED esté activa, en cuyo
caso la instrucción COMMIT será asíncrona y por tanto durable
diferida. Consulte Database level control para obtener más información.
ON
La transacción es durable diferida, salvo que la opción de base de datos
DELAYED_DURABLITY = DISABLED esté activa, en cuyo caso la instrucción
COMMIT será síncrona y por tanto totalmente durable. Consulte Database level
control para obtener más información.
Código de ejemplo
SQLCopiar
CREATE PROCEDURE <procedureName> ...
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
AS BEGIN ATOMIC WITH
(
DELAYED_DURABILITY = ON,
TRANSACTION ISOLATION LEVEL = SNAPSHOT,
LANGUAGE = N'English'
...
)
END
Tabla 1: Durabilidad en bloques ATOMIC
Opción de durabilidad de Transacción en proceso (totalmente durable o durable
bloque ATOMIC Ninguna transacción existente diferida)
DELAYED_DURABILITY El bloque ATOMIC inicia una nueva El bloque ATOMIC crea un punto de retorno en la transacción
= OFF transacción totalmente durable. existente y después inicia la nueva transacción.
DELAYED_DURABILITY El bloque ATOMIC inicia una nueva El bloque ATOMIC crea un punto de retorno en la transacción
= ON transacción durable diferida. existente y después inicia la nueva transacción.
Control de nivel COMMIT -Transact-SQL
SQLCopiar
COMMIT [ { TRAN | TRANSACTION } ] [ transaction_name |
@tran_name_variable ] ] [ WITH ( DELAYED_DURABILITY = { OFF | ON } ) ]
OFF
[valor predeterminado] La instrucción COMMIT de la transacción es totalmente
durable, salvo que la opción de base de datos DELAYED_DURABLITY = FORCED
esté activa, en cuyo caso la instrucción COMMIT será asincrónica y por tanto
durable diferida. Consulte Database level control para obtener más información.
ON
La instrucción COMMIT de la transacción es durable diferida, salvo que la
opción de base de datos DELAYED_DURABLITY = DISABLED esté activa, en cuyo
caso la instrucción COMMIT será sincrónica y por tanto totalmente
durable. Consulte Database level control para obtener más información.
distribuidas.
Cómo forzar un vaciado del registro de
transacciones
Existen dos formas de forzar el vaciado en el disco del registro de transacciones.
Replicación de transacciones
Las transacciones durables diferidas no son compatibles con la replicación
transaccional.
Trasvase de registros
Solo las transacciones que se han convertido en durables se incluyen en el
registro que se trasvasa.
Catástrofes
En caso de catástrofe, como un bloqueo del servidor, perderá los datos de todas
las transacciones confirmadas que no se hayan guardado en el disco. Las
transacciones de durabilidad diferida se guardan en el disco siempre que se
ejecute una transacción totalmente durable respecto a una tabla (optimizada
para memoria durable o basada en disco) en la base de datos o cuando se llama
a sp_flush_log . Si está usando transacciones de durabilidad diferida, conviene
crear una tabla pequeña en la base de datos que podrá actualizar regularmente
o llamar de forma periódica a sp_flush_log para guardar todas las transacciones
confirmadas pendientes. El registro de transacciones también se vacía cada vez
que se llena, pero es difícil de predecir e imposible de controlar.
SE APLICA A: SQL Server Azure SQL Database Azure SQL Data
Warehouse Almacenamiento de datos paralelos
Importante
Nota
Los factores que mantienen activos los VLF por un periodo prolongado de
tiempo, como puede ser una transacción de ejecución prolongada, pueden
restringir la reducción del registro o incluso impedirla completamente. Para
obtener información, vea Factores que pueden ralentizar el truncamiento del
registro.
Importante
sys.dm_db_log_space_usage (Transact-SQL)
sys.database_files (Transact-SQL) (Vea las
columnas size, max_size y growth de los archivos de registro).
Recomendaciones
Estas son algunas recomendaciones generales referentes a los archivos de
registro de transacciones: