Pregunta

Gente,

Suponga que recibe una copia de seguridad desconectada de una base de datos de SQL Server (2005 o 2008) y la restaura a su instancia de SQL Server.

¿Hay alguna manera, hay un catálogo del sistema o algo así, para saber cuándo ocurrió la última operación de escritura en esa base de datos en particular? Me gustaría saber de qué día fue una copia de seguridad de una base de datos en particular; desafortunadamente, eso no se está registrando explícitamente en ninguna parte, y verificar todas las docenas de tablas de datos para la marca de fecha / hora más alta tampoco es realmente una opción ....

¿Alguna idea? Claro, puedo ver la marca de fecha / hora del archivo * .bak, pero ¿puedo averiguarlo con mayor precisión desde SQL Server (Management Studio)?

¡Gracias! Marc

¿Fue útil?

Solución

Puede intentar RESTORE HEADERONLY en su archivo de respaldo, como se describe aquí

que debería darle la información que está buscando.

Otros consejos

Si tiene acceso a la instancia de SQL Server donde se ejecutó originalmente la copia de seguridad, debería poder consultar msdb:

SELECT backup_set_id, backup_start_date, backup_finish_date
FROM  msdb.dbo.backupset  
WHERE database_name = 'MyDBname' AND type = 'D' 

Hay varias tablas relacionadas con los conjuntos de copias de seguridad:

  • archivo de copia de seguridad: contiene una fila para cada archivo de datos o archivo de registro respaldado
  • backupmediafamily: contiene una fila para cada familia de medios
  • backupmediaset: contiene una fila para cada conjunto de medios de copia de seguridad
  • conjunto de copia de seguridad: contiene una fila para cada conjunto de copia de seguridad

Al consultar estas tablas puede determinar cuándo se realizaron las últimas copias de seguridad, qué tipo de copias de seguridad se produjeron y dónde se escribieron los archivos.

Un poco tarde, pero debería ser lo que quieres.

Cada escritura en la base de datos es una entrada en el archivo de registro. Que tiene un LSN. Esto debe almacenarse en la copia de seguridad para las restauraciones de registros al menos.

Entonces, ¿cómo hacer coincidir LSN con una fecha y hora?

SELECT TOP 5 [End Time] AS BringFirst, *
FROM ::fn_dblog (NULL, NULL)
WHERE [End Time] IS NOT NULL
ORDER BY BringFirst DESC

Nunca he usado esto antes (solo tuve una jugada para esta respuesta). Es muy probable que algunas escrituras formen parte de la copia de seguridad en sí, pero debería poder distinguirlas con algunas revoluciones.

por lo que sé en la base de datos maestra existe una tabla de registro donde cada escritura se almacena con información detallada. PERO no estoy seguro si necesita habilitar el mecanismo de registro, por lo que el valor predeterminado es no iniciar sesión y tiene que habilitarlo. En Oracle, por ejemplo, existe la posibilidad de consultar un registro de tabla de base de datos del sistema que puede consultar.

Si ese no es el caso, aún podría escribir un disparador y aplicarlo en cada tabla / columna necesaria y hacer el registro usted mismo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top