Restaurar la base de datos usando GUI - Archivo incorrecto para restaurar


20

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 

ingrese la descripción de la imagen aquí

¿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:

1 ingrese la descripción de la imagen aquí 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:

ingrese la descripción de la imagen aquí

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:

ingrese la descripción de la imagen aquí

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)



1
¿Ha configurado un seguimiento y luego ha ejecutado las opciones de la GUI para capturar cómo SSMS obtiene la información? Podría ser más rápido ...
Steve Mangiameli

1
@RafaelPiccinelli: siento que se pasa por alto algo simple, pero no estoy seguro de qué es. ¿Restauraste la base de datos msdb de la instancia original a la GDLIC2014? ¿Podría algo estar usando la cadena o ruta de conexión incorrecta? Ciertamente, SQL Server no está compilando datos para las copias de seguridad y restauraciones. (Por otro lado, es interesante que esté restaurando _2.mdf, _3.mdf y _4.mdf, pero no un .mdf sin sufijo o un _1.mdf.)
RLF

Deje de usar la GUI para restaurar. Mire el disco de respaldo o la cinta para determinar lo que realmente tiene, y comience desde allí.
Contraseñas anti-débiles

Hola @ Contraseñas anti-débiles. No no. Yo no uso GUI. Consulto la secuencia de registro y trabajo con ella. Tenía curiosidad acerca de la GUI, pero luego vi este problema. Intento estar lo más lejos posible de la GUI.
Racer SQL

Respuestas:


1

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.


Hola @john Gracias por tu respuesta. Hice un declare @data datetime set @data=getdate() EXEC msdb.dbo.sp_delete_backuphistory @oldest_date=@dataY borré el historial. Haré algunas pruebas para ver si funcionó. Gracias.
Racer SQL

Hola @RafaelPiccinelli. ¿Funcionó esto para ti?
Kefash

Hola @Kefash. Creo que no funcionó. No puedo recordar en este momento. pero cada vez que recibo una respuesta, inmediatamente voto y selecciono como respuesta. Creo que no resolvió mi problema.
Racer SQL

@ John Necesito una solución para esto muuuy mal. ¿se resolvió finalmente su problema?
Kefash

@RafaelPiccinelli Necesito arreglar esto ya que cuando necesito restaurar a un punto para decir que agregar una base de datos al HAG puede ser molesto. Sé que esto se puede hacer sin la GUI, pero los registros de transacciones se toman cada 10 minutos. ¿Cuáles fueron tus otros enfoques?
Kefash
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.