Ich spiele nur mit der SSMS-Grafikschnittstelle herum und untersuche die Optionen der Aufgabe "Wiederherstellen".
Eine Sache, die mir aufgefallen ist, wenn ich auf "Skript generieren" geklickt habe, ist die erste Zeile der Abfrage:
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, kein Problem, aber ich mache tägliche Backups dieser Datenbank. Dies Database_name_LOGSHIPPING.BKP
war der Name der Datei, die ich vor einem Monat für den Protokollversand erstellt habe.
Warum verweist die SSMS-Grafikschnittstelle auf diese Sicherungsdatei, wenn ich versuche, eine Sicherung wiederherzustellen? Ich habe nicht einmal mehr diese Datei.
Mit dieser Abfrage von MSSQLTIPS kann ich alle Sicherungen von dieser Datenbank sehen:
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
Was kann hier falsch sein? Ich verwende NUR KOPIEREN nicht.
EDIT2:
Ich mache täglich manuelle Sicherungen zum Testen, und auch auf diese Weise wählt SQL Server die alte Sicherung aus, die nicht mehr vorhanden ist. Beim Ausführen RESTORE HEADERONLY...
heißt es (offensichtlich), dass die Datei nicht existiert.
EDIT 3:
Dies ist die GUI drucken:
Wow Wow Wow WARTEN SIE EINE MINUTE !
Diese Datenbank wurde von einem anderen Server wiederhergestellt (derselbe Server, verschiedene Instanzen). Huuum ... Ich denke, das Problem ist hier.
Könnt ihr auf dem zweiten Bild auf "Server" sehen? Es hat 2 Server. Ich benutze die mit den Namen Instanz GDLIC2014.
das Drehbuch:
Das Backup-Skript:
DECLARE @Patch varchar(1000)
SELECT @Patch = (SELECT 'PATCH\FULL\DATABASE_ ' + convert(varchar(500),GetDate(),112) + '.bkp')
BACKUP DATABASE DATABASE TO DISK=@Patch with compression
Mit der gleichen Abfrage von MSSQLTIPS konnte ich diese Ergebnisse ohne Datumsbereich finden:
Das rote Quadrat ist die falsche Sicherung von der älteren Instanz, das blaue Quadrat ist die letzte Sicherung (die GUI sollte sie verwenden).
EDIT 4:
Nun, mit dieser Abfrage zum Auflisten des Sicherungsverlaufs sehe ich, dass alle Protokolle und vollständigen Daten korrekt aufgelistet sind:
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
EDIT5:
Gibt es etwas, um den Header der Datenbank neu zu starten
(Ich habe keine Ideen mehr)