Je suis juste en train de déconner avec l'interface graphique SSMS et d'étudier les options de la tâche de "restauration".
Une chose que j'ai remarquée, c'est quand je clique sur "générer un script", la première ligne de la requête est:
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, pas de problème, mais je fais des sauvegardes quotidiennes de cette base de données. c'est Database_name_LOGSHIPPING.BKP
le nom du fichier que j'ai créé pour l'envoi de journaux il y a un mois.
Pourquoi lorsque j'essaie d'utiliser l'interface graphique SSMS pour restaurer une sauvegarde, il pointe vers ce fichier de sauvegarde? Je n'ai même plus ce fichier.
Avec cette requête de MSSQLTIPS, je peux voir toutes les sauvegardes de cette base de données:
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
Que peut-il y avoir de mal ici? Je n'utilise pas COPY UNIQUEMENT.
EDIT2:
Je fais des sauvegardes manuelles quotidiennes pour tester, et même de cette façon, SQL Server sélectionne cette ancienne sauvegarde qui n'existe plus. Lors de l'exécution, RESTORE HEADERONLY...
il indique (évidemment) que le fichier n'existe pas.
EDIT 3:
Voici l'impression GUI:
Wow Wow Wow ATTENDEZ UNE MINUTE !
Cette base de données était une restauration à partir d'un autre serveur (même serveur, différentes instances). Huuum ... Je pense que le problème est là.
Pouvez-vous voir sur "serveur" dans la deuxième image? il a 2 serveurs. J'utilise celui avec l'instance de noms GDLIC2014.
le script:
Le script de sauvegarde:
DECLARE @Patch varchar(1000)
SELECT @Patch = (SELECT 'PATCH\FULL\DATABASE_ ' + convert(varchar(500),GetDate(),112) + '.bkp')
BACKUP DATABASE DATABASE TO DISK=@Patch with compression
Avec la même requête de MSSQLTIPS, j'ai pu trouver ces résultats, en l'utilisant sans plage de dates:
Le carré rouge est la mauvaise sauvegarde de l'ancienne instance, le carré bleu est la dernière sauvegarde prise (l'interface graphique devrait l'utiliser)
EDIT 4:
Eh bien, avec cette requête pour répertorier l'historique des sauvegardes, je vois que chaque journal et complet sont correctement répertoriés:
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:
Y a-t-il quelque chose pour redémarrer l'en-tête de la base de données
(Je suis à court d'idées)