Ben sadece SSMS grafik arayüzü ile uğraşmak ve "geri yükleme" görev seçenekleri üzerinde çalışıyorum.
Fark ettiğim bir şey, "komut dosyası oluştur" üzerine tıkladığımda, sorgunun ilk satırı:
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 )
Tamam, sorun değil, ama, bu veritabanının günlük yedeklerini yapıyorum. bu Database_name_LOGSHIPPING.BKP
, bir ay önce günlük gönderimi için yaptığım dosyanın adıydı.
Yedeklemeyi geri yüklemek için SSMS grafik arayüzünü kullanmaya çalıştığımda, neden bu yedekleme dosyasını gösteriyor? Artık bu dosyam yok.
MSSQLTIPS bu sorgu ile bu veritabanındaki tüm yedekleri görebilirsiniz:
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
Burada ne yanlış olabilir? SADECE KOPYA kullanmıyorum.
EDIT2:
Test etmek için günlük manuel yedeklemeler yapıyorum ve hatta bu şekilde SQL Server artık mevcut olmayan eski yedeklemeyi seçiyor. Çalıştırırken RESTORE HEADERONLY...
o dosyanın mevcut değil (tabii ki) diyor.
DÜZENLEME 3:
Bu GUI baskısı:
Bu veritabanı başka bir sunucudan (aynı sunucu, farklı örnekler) bir geri yüklemeydi. Huuum ... Bence sorun burada.
İkinci resimde "server" ı görebiliyor musunuz? 2 sunucusu vardır. GDLIC2014 adlarında olanı kullanıyorum.
senaryo:
Yedek komut dosyası:
DECLARE @Patch varchar(1000)
SELECT @Patch = (SELECT 'PATCH\FULL\DATABASE_ ' + convert(varchar(500),GetDate(),112) + '.bkp')
BACKUP DATABASE DATABASE TO DISK=@Patch with compression
MSSQLTIPS aynı sorgu ile, ben hiçbir tarih aralığı ile kullanarak, bu sonuçları bulabiliriz:
Kırmızı kare eski örnekten gelen yanlış yedekleme, Mavi kare alınan son yedeklemedir (GUI bunu kullanıyor olmalıdır)
DÜZENLEME 4:
Eh, Yedekleme Geçmişi listelemek için bu sorgu ile, her günlük ve tam doğru listelenir görüyorum:
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:
Veritabanının başlığını yeniden başlatmak için bir şey var mı
(Fikirlerim bitti)