Po prostu bawię się interfejsem graficznym SSMS i badam opcje zadania „przywróć”.
Jedną z rzeczy, które zauważyłem, jest to, że kiedy klikam „generuj skrypt”, pierwszy wiersz zapytania to:
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, nie ma problemu, ale robię codzienne kopie zapasowe tej bazy danych. to Database_name_LOGSHIPPING.BKP
była nazwa pliku, który utworzyłem do wysyłki dziennika miesiąc temu.
Dlaczego kiedy próbuję użyć interfejsu graficznego SSMS do przywrócenia kopii zapasowej, wskazuje ona ten plik kopii zapasowej? Nie mam już nawet tego pliku.
Dzięki temu zapytaniu z MSSQLTIPS widzę wszystkie kopie zapasowe z tej bazy danych:
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
Co może tu być nie tak? Nie używam TYLKO KOPIOWANIA.
EDYCJA 2:
Robię codzienne ręczne kopie zapasowe w celu przetestowania i nawet w ten sposób SQL Server wybiera tę starą kopię zapasową, która już nie istnieje. Podczas uruchamiania RESTORE HEADERONLY...
mówi (oczywiście), że plik nie istnieje.
EDYCJA 3:
To drukuje GUI:
Ta baza danych była przywróceniem z innego serwera (tego samego serwera, różnych instancji). Huuum ... Myślę, że problem jest tutaj.
Czy widzicie na „serwerze” na drugim zdjęciu? ma 2 serwery. Używam tego z instancją nazw GDLIC2014.
scenariusz:
Skrypt zapasowy:
DECLARE @Patch varchar(1000)
SELECT @Patch = (SELECT 'PATCH\FULL\DATABASE_ ' + convert(varchar(500),GetDate(),112) + '.bkp')
BACKUP DATABASE DATABASE TO DISK=@Patch with compression
Za pomocą tego samego zapytania z MSSQLTIPS mogłem znaleźć te wyniki, używając go bez zakresu dat:
Czerwony kwadrat to niewłaściwa kopia zapasowa ze starszej instancji, niebieski kwadrat jest ostatnią wykonaną kopią zapasową (GUI powinien jej użyć)
EDYCJA 4:
Cóż, dzięki temu zapytaniu o historię tworzenia kopii zapasowej widzę, że każdy dziennik i pełny są poprawnie wymienione:
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
EDYCJA 5:
Czy jest coś, co zrestartuje nagłówek bazy danych
(Nie mam pomysłów)