GUI kullanarak veritabanını geri yükle - Geri yüklemek için yanlış dosya


20

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 

resim açıklamasını buraya girin

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

1 resim açıklamasını buraya girin Wow Wow Wow DAKİKA BEKLE !

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:

resim açıklamasını buraya girin

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:

resim açıklamasını buraya girin

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)


3
En son SSMS GUI - 2014'ü kullanmayı deneyebilir misiniz ? Birçok düzeltme
Kin Shah

1
Bir izlemeyi ayarladınız ve ardından SSMS'nin bilgileri nasıl aldığını yakalamak için GUI seçeneklerini kullandınız mı? Daha hızlı olabilir ...
Steve Mangiameli

1
@RafaelPiccinelli - Basit bir şeyin göz ardı edildiğini hissediyorum, ancak ne olduğundan emin değilim. Msdb veritabanını orijinalden GDLIC2014 örneğine geri yüklediniz mi? Bir şey yanlış bağlantı dizesini veya yolunu kullanıyor olabilir mi? Kesinlikle SQL Server yedeklemeler ve geri yüklemeler için veri oluşturmuyor. (Bir yana, _2.mdf, _3.mdf ve _4.mdf'yi geri yüklemeniz ilginç, ancak ekli olmayan bir .mdf veya bir _1.mdf değil.)
RLF

Geri yüklemek için GUI'yi kullanmayı bırakın. Gerçekte neye sahip olduğunuzu belirlemek için yedekleme diskine veya kasete bakın ve bunlardan başlayın.
Anti-zayıf şifreler

Merhaba @ Anti-zayıf şifreler. Hayır hayır. GUI kullanmıyorum. Günlük sırasını sorgularım ve onunla çalışırım. Sadece GUI'yi merak ettim, ama sonra bu problemi gördüm. Ben olabildiğince GUI uzak olmaya çalışın.
Racer SQL

Yanıtlar:


1

Şans, yedekleme geçmişi tablolarında senkronizasyondan çıkmış bir şeydir ve kullanıcı arayüzü son "tutarlı" tam yedeklemeye gidiyor. Neden yaptığını gerçekten merak ediyorsanız, hesabınızla sınırlı bir profil oluşturucu başlatın, GUI'deki geri yükleme adımlarını izleyin ve izlemede yakalanan ve kullanıcı arayüzünün perde arkasında ne yaptığını gösteren komutları inceleyin . Bu size aradığınız kesin yanıtı verecektir.

Sadece bunu geçmeyi tercih ederseniz, yedekleme geçmişinizi EXEC [msdb].[dbo].[sp_delete_backuphistory] @oldest_date=getdate()(bunu en son ne zaman çalıştırdığınıza bağlı olarak, her seferinde bir ay temizlemek isteyebilirsiniz) ve ardından yeni bir dolu vb. bundan sonra uygun yedeklemeleri kullanmak için GUI'yi sıfırlayacağından şüphelenir.

Son olarak, başka bir seçenek çalıştırmak Wayne Sheffield tarafından yazılan bu komut dosyasını . Yedekleme zinciri ile ilgili herhangi bir sorun hakkında daha fazla bilgi sağlayabilir. Bu cevabı aslen yayınlayana kadar bu konuya rastlamadım, ama umarım gelecekte başka birine yardımcı olur.


Hey @john Cevabınız için teşekkür ederim .. Yaptım declare @data datetime set @data=getdate() EXEC msdb.dbo.sp_delete_backuphistory @oldest_date=@dataVe tarihi sildim. Çalışıp çalışmadığını görmek için bazı testler yapacağım. Teşekkür ederim.
Racer SQL

Merhaba @RafaelPiccinelli. Bu senin için işe yaradı mı?
Kefash

hey @Kefash. Ben işe yaramadığını düşünüyorum. Şu an hatırlayamıyorum. ama her cevap aldığımda, hemen onay veriyorum ve cevap olarak seçiyorum. Sanırım sorunumu çözmedi.
Racer SQL

@john Bu sooo için kötü bir düzeltmeye ihtiyacım var. sorununuz sonunda çözüldü mü?
Kefash

@ RafaelPiccinelli Ben HAG bir veritabanı eklemek söylemek bir noktaya geri yüklemek gerektiğinde bu düzeltmek gerekir can sıkıcı olabilir. Bu GUI olmadan yapılabilir biliyorum ama işlem günlükleri her 10 dakikada bir alınır. Diğer yaklaşımlarınız nelerdi?
Kefash
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.