Oracle tiene comandos SQL que se pueden emitir para que no se registre una transacción. ¿Existe algo similar para SQL Server 2008?
Mi escenario: necesitamos registros de Tx en servidores (Dev, QA, Prod), pero tal vez podamos prescindir de ellos en las máquinas de desarrollo.
sql-server
sql-server-2008
Raj Más
fuente
fuente
NOLOGGED
opción.Respuestas:
No puede prescindir de los registros de transacciones en SQL Server, bajo ninguna circunstancia. El motor simplemente no funcionará.
PUEDE configurar su modelo de recuperación en SIMPLE en sus máquinas de desarrollo, lo que evitará que el registro de transacciones se hinche cuando no se realizan las copias de seguridad del registro de transacciones.
ALTER DATABASE MyDB SET RECOVERY SIMPLE;
fuente
SQL Server requiere un registro de transacciones para funcionar.
Dicho esto, hay dos modos de funcionamiento para el registro de transacciones:
En el modo completo , el registro de transacciones sigue creciendo hasta que realiza una copia de seguridad de la base de datos. En modo simple : el espacio en el registro de transacciones se 'recicla' en cada punto de control .
Muy pocas personas tienen la necesidad de ejecutar sus bases de datos en el modelo de recuperación completa . El único punto en el uso del modelo completo es si desea hacer una copia de seguridad de la base de datos varias veces al día, y la copia de seguridad de toda la base de datos lleva demasiado tiempo, por lo que simplemente realiza una copia de seguridad del registro de transacciones.
El registro de transacciones sigue creciendo todo el día y usted sigue haciendo copias de seguridad. Esa noche usted hace su copia de seguridad completa, y SQL Server luego trunca el registro de transacciones, comienza a reutilizar el espacio asignado en el archivo de registro de transacciones.
Si solo realiza copias de seguridad completas de la base de datos , no desea el modo de recuperación completa.
fuente
Hay un tercer modo de recuperación no mencionado anteriormente. El modo de recuperación determina en última instancia el tamaño de los archivos LDF y la frecuencia con la que se escriben. En los casos en los que vaya a realizar cualquier tipo de inserciones masivas, debe configurar la base de datos en "BULK / LOGGED". Esto hace que los insertos a granel se muevan rápidamente y se puedan cambiar sobre la marcha.
Para hacerlo
USE master ; ALTER DATABASE model SET RECOVERY BULK_LOGGED ;
Para volver a cambiarlo:
USE master ; ALTER DATABASE model SET RECOVERY FULL ;
En el espíritu de agregar a la conversación sobre por qué alguien no querría un LDF, agrego esto: Hacemos modelado multidimensional. Básicamente, utilizamos la base de datos como un gran almacén de variables que se procesan de forma masiva mediante programas externos. NUNCA requerimos retrocesos. Si pudiéramos aumentar el rendimiento desactivando TODOS los registros, lo tomaríamos en un santiamén.
fuente
¿Cuál es tu problema con los registros de Tx? ¿Ellos crecen? Luego, configure la opción truncar en el punto de control.
De la documentación de Microsoft:
fuente
Si esto es solo para máquinas de desarrollo para ahorrar espacio, simplemente vaya con el modo de recuperación simple y estará bien.
Sin embargo, en máquinas de producción, le recomiendo encarecidamente que mantenga las bases de datos en modo de recuperación completa. Esto asegurará que pueda realizar una recuperación puntual si es necesario.
Además, tener bases de datos en modo de recuperación completa puede ayudarlo a deshacer actualizaciones y eliminaciones accidentales al leer el registro de transacciones. Consulte a continuación o más detalles.
¿Cómo puedo revertir una consulta de ACTUALIZACIÓN en SQL Server 2005?
Lea el archivo de registro (* .LDF) en sql server 2008
Si el espacio es un problema en las máquinas de producción, simplemente cree copias de seguridad frecuentes del registro de transacciones.
fuente