Solo estoy jugando con la interfaz gráfica SSMS y estudiando las opciones de la tarea "restaurar".
Una cosa que noté es que cuando hago clic en "generar script", la primera línea de la consulta es:
RESTORE DATABASE [MyDatabase] FROM DISK = N'Server_Patch\Database_name_LOGSHIPPING.BKP' WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 5 ( and a lot of log backups for point in time )
Ok, no hay problema, pero estoy haciendo copias de seguridad diarias de esta base de datos. estaDatabase_name_LOGSHIPPING.BKP
era el nombre del archivo que hice para el envío de registros hace un mes.
¿Por qué cuando trato de usar la interfaz gráfica SSMS para restaurar una copia de seguridad, apunta a este archivo de copia de seguridad? Ya ni siquiera tengo este archivo.
Con esta consulta de MSSQLTIPS puedo ver todas las copias de seguridad de esta base de datos:
SELECT
CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,
msdb.dbo.backupset.database_name,
msdb.dbo.backupset.backup_start_date,
msdb.dbo.backupset.backup_finish_date,
msdb.dbo.backupset.expiration_date,
CASE msdb..backupset.type
WHEN 'D' THEN 'Database'
WHEN 'L' THEN 'Log'
END AS backup_type,
msdb.dbo.backupset.backup_size,
msdb.dbo.backupmediafamily.logical_device_name,
msdb.dbo.backupmediafamily.physical_device_name,
msdb.dbo.backupset.name AS backupset_name,
msdb.dbo.backupset.description
FROM msdb.dbo.backupmediafamily
INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id
WHERE (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102) >= GETDATE() - 7) and msdb..backupset.type ='D'
ORDER BY
msdb.dbo.backupset.database_name,
msdb.dbo.backupset.backup_finish_date
¿Qué puede estar mal aquí? No estoy usando COPIA SOLAMENTE.
EDIT2:
Estoy haciendo copias de seguridad manuales diarias para probar, e incluso de esta manera, SQL Server selecciona esa copia de seguridad anterior que ya no existe. Cuando se ejecuta RESTORE HEADERONLY...
dice (obviamente) el archivo no existe.
EDITAR 3:
Esta es la impresión GUI:
Wow Wow Wow ¡ESPERA UN MINUTO !
Esta base de datos fue una restauración desde otro servidor (mismo servidor, instancias diferentes). Huuum ... creo que el problema está aquí.
¿Pueden ver en "servidor" en la segunda imagen? Tiene 2 servidores. Estoy usando el que tiene la instancia de nombres GDLIC2014.
la secuencia de comandos:
El script de respaldo:
DECLARE @Patch varchar(1000)
SELECT @Patch = (SELECT 'PATCH\FULL\DATABASE_ ' + convert(varchar(500),GetDate(),112) + '.bkp')
BACKUP DATABASE DATABASE TO DISK=@Patch with compression
Con la misma consulta de MSSQLTIPS, pude encontrar estos resultados, utilizándolo sin rango de fechas:
El cuadrado rojo es el respaldo incorrecto de la instancia anterior, el cuadrado azul es el último respaldo tomado (la GUI debería estar usándolo)
EDITAR 4:
Bueno, con esta consulta para enumerar el Historial de copias de seguridad, veo que todos los registros y todos están correctamente listados:
SELECT TOP 100
s.database_name,
m.physical_device_name,
CAST(CAST(s.backup_size / 1000000 AS INT) AS VARCHAR(14)) + ' ' + 'MB' AS bkSize,
CAST(DATEDIFF(second, s.backup_start_date,
s.backup_finish_date) AS VARCHAR(4)) + ' ' + 'Seconds' TimeTaken,
s.backup_start_date,
CAST(s.first_lsn AS VARCHAR(50)) AS first_lsn,
CAST(s.last_lsn AS VARCHAR(50)) AS last_lsn,
CASE s.[type]
WHEN 'D' THEN 'Full'
WHEN 'I' THEN 'Differential'
WHEN 'L' THEN 'Transaction Log'
END AS BackupType,
s.server_name,
s.recovery_model
FROM msdb.dbo.backupset s
INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id
WHERE s.database_name = DB_NAME() -- Remove this line for all the database
ORDER BY backup_start_date DESC, backup_finish_date
GO
EDITAR5:
¿Hay algo para reiniciar el encabezado de la base de datos?
(Estoy sin ideas)
fuente
Respuestas:
Lo más probable es que las tablas del historial de copias de seguridad no estén sincronizadas y la interfaz de usuario vaya a la última copia de seguridad completa "coherente". Si está realmente interesado en saber por qué está haciendo lo que está haciendo, inicie un seguimiento del generador de perfiles limitado a su cuenta, siga los pasos de restauración en la GUI y revise los comandos capturados en el seguimiento que muestran qué está haciendo la interfaz de usuario detrás de escena . Esto te dará la respuesta definitiva que estás buscando.
Si prefiere pasar de esto, puede borrar su historial de copias de seguridad a través de
EXEC [msdb].[dbo].[sp_delete_backuphistory] @oldest_date=getdate()
(dependiendo de la última vez que ejecutó esto, es posible que desee borrarlo un mes a la vez) y luego tomar un nuevo completo, etc. sospecharía que esto restablecerá la GUI para usar las copias de seguridad adecuadas en el futuro.Finalmente, otra opción es ejecutar este script creado por Wayne Sheffield . Puede proporcionar más información sobre cualquier problema con la cadena de respaldo. No me encontré con esto hasta que publiqué esta respuesta originalmente, pero espero que ayude a alguien más en el futuro.
fuente
declare @data datetime set @data=getdate() EXEC msdb.dbo.sp_delete_backuphistory @oldest_date=@data
Y borré el historial. Haré algunas pruebas para ver si funcionó. Gracias.