sql-server - una - mejorar rendimiento de base de datos sql server
Restaure la base de datos de SQL Server sin registro de transacciones (5)
¿Hay alguna manera, dado un archivo .bak de SQL Server 2008, de restaurar una base de datos desde el archivo .bak sin el registro de transacciones?
La razón por la que estoy preguntando es que el tamaño del archivo de registro de transacciones de esta base de datos es enorme, superando el espacio en disco que tengo disponible. No tengo ningún interés en el registro de transacciones, y no tengo interés en ninguna transacción incompleta, por lo que normalmente simplemente reduciría el registro a cero una vez que restaure la base de datos. Pero eso no ayuda cuando no tengo suficiente espacio en disco para crear el registro en primer lugar. Lo que necesito es una forma de decirle a SQL Server que restaure solo los datos del archivo .bak, no del registro de transacciones. ¿Hay alguna forma de hacer eso?
Tenga en cuenta que no tengo control sobre la generación del archivo .bak, es de una fuente externa. Reducir el registro de transacciones antes de generar el archivo .bak no es una opción.
El registro de transacciones es una parte integral de la copia de seguridad. No puede decirle a SQL Server que ignore el registro de transacciones, porque no hay forma de, por ejemplo, restaurar y reducir el archivo de registro de transacciones al mismo tiempo. Sin embargo, puedes echar un vistazo a la publicación de DBA para hackear el proceso, aunque no se recomienda en absoluto.
Alternativamente, puede probar algunas herramientas de terceros para restaurar, en particular el proceso de restauración virtual que puede ahorrar mucho espacio y tiempo. Consulte Restauración ApexSQL , Restauración Virtual RedGate, Base de Datos Virtual Idera.
Descargo de responsabilidad: trabajo para ApexSQL como ingeniero de soporte
Es posible que esto no funcione, ya que no tiene control sobre la generación del archivo .bak, pero si puede convencer a su fuente para que separe la base de datos y le envíe una copia del archivo .mdf directamente, puede adjuntar el .mdf y su servidor crearía automáticamente un nuevo archivo de registro de transacciones vacío.
Consulte sp_detach_db y sp_attach_db (o CREATE DATABASE nombre_base_datos PARA ACOPLAR dependiendo de su versión de servidor sql).
Esto es realmente una pregunta para los sitios ServerFault o DBA, pero la respuesta corta es no, solo puedes restaurar el archivo .bak completo (dejando de lado escenarios "exóticos" como el grupo de archivos o las restauraciones fragmentarias). No dice qué significa "enorme", pero el espacio en disco es barato; Si agregar más realmente no es una opción, entonces necesita encontrar una forma alternativa de obtener los datos de su fuente externa.
Sé que este es un hilo viejo ahora, pero lo encontré mientras tenía problemas de corrupción del registro transaccional, aquí es cómo lo solucioné sin pérdida de datos (¡aunque sí tuve tiempo de inactividad!)
Aquí esta lo que hice:--
Detenga el servicio de instancia del servidor SQL Haga una copia del archivo .mdf de la base de datos afectada y el archivo .ldf (si tiene un archivo .ndf, cópielo también). Solo para estar seguro, siempre puede devolverlos si no lo hace no funciona para usted
reinicie el servicio.
Inicie sesión en el estudio de administración sql y cambie el modo de base de datos a simple, luego realice una copia de seguridad completa.
Vuelva a cambiar el tipo de base de datos y una vez más realice una copia de seguridad completa y luego realice una copia de seguridad de registro transaccional.
Separar la base de datos.
Haga clic con el botón derecho en las bases de datos y haga clic en restaurar, seleccione el nombre de la base de datos de la lista desplegable, seleccione la última copia de seguridad completa de la base de datos creada (no la tomada del modo simple) y también seleccione la copia de seguridad del registro transaccional.
Haga clic en Restaurar y debería volver a guardar todo sin ningún daño en los archivos de registro.
Esto funcionó para mí sin errores y mis copias de seguridad funcionaron correctamente después y no hubo más errores de registro transaccional.
No, el registro de transacciones es obligatorio.
Opción 1:
Una opción puede ser restaurarla a una máquina en la que TIENE espacio suficiente. Luego, en la copia restaurada, cambie el registro a registros masivos o simples, reduzca los registros, realice otra operación de copia de seguridad en esta nueva copia y luego utilícela para restaurar a la máquina de destino con el ahora mucho más pequeño registro de transacciones.
Opcion 2:
Alternativamente, quizás el contacto en la fuente externa podría reducir el registro de transacciones antes de enviárselo (esto puede no funcionar si el registro es grande debido a una gran cantidad de grandes transacciones).
Los documentos sobre el comando para reducir el archivo de registro están disponibles aquí .