Bu Makalede Log shipping database’de en sonra restore olan backup file bulmanın scriptini paylaşacağız.
İhtiyaca göre kullanılan log shipping bazı durumlarda sunucuya connection yapan user’ların disconnect edilmesi istenmez.
Böyle durumlarda user veri okurken restore jobunu locklar ve restore’un geri kalmasına sebep olur.
Buradan okunan veriler geriden okunur ve bu durum istenmeyen bir sorun haline gelebilir. En son restore ettiğiniz, backup file bulmak için çalıştırdığınız script size en sonra restore zamanını gösteriyor olabilir. Log shipping’de restore ederken Header’den okuduğu için en baştan başlayarak en son restore saatini alır.
Fakat restore kontrol scriptleri ile siz restore ettiğiniz backup file değil en son restore’nin başladığı zaman’ın değerini görürsünüz. Bu durumda aşağıdaki script size restore olan backup dosyasını bulmanız ve o saati GMT+3’e çevirip Türkiye saati ile en restore olan backup file bulabilirsiniz.
Ayrıca lock’a sebep olan kullanıcı belirli bir kullanıcı ise onun için kill script’inde WHERE koşuluna koyarak. LS_Restore Job’unun 1.adımına ekleyebilirsiniz.
Aşağıdaki scripte convert hatası almanız durumunda substring olan filepath’lerinizi kontrol ediniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
SELECT top(10) bmf.physical_device_name as d, CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, substring(replace(replace(bmf.physical_device_name,':CPathFiLeName',''),'.trn',''),1,4)+'-'+ substring(replace(replace(bmf.physical_device_name,':CPathFiLeName',''),'.trn',''),5,2)+'-'+ substring(replace(replace(bmf.physical_device_name,':CPathFiLeName',''),'.trn',''),7,2)+' '+ substring(replace(replace(bmf.physical_device_name,':CPathFiLeName',''),'.trn',''),9,2)+':'+ substring(replace(replace(bmf.physical_device_name,':CPathFiLeName',''),'.trn',''),11,2)+':'+ substring(replace(replace(bmf.physical_device_name,':CPathFiLeName',''),'.trn',''),13,2)+'.000'), DATENAME(TzOffset, SYSDATETIMEOFFSET()))) as lastRestoreFileDate, rh.destination_database_name AS [Database], CASE WHEN rh.restore_type = 'D' THEN 'Database' WHEN rh.restore_type = 'F' THEN 'File' WHEN rh.restore_type = 'I' THEN 'Differential' WHEN rh.restore_type = 'L' THEN 'Log' ELSE rh.restore_type END AS [Restore Type], rh.restore_date AS [Restore Date], bmf.physical_device_name AS [Source], rf.destination_phys_name AS [Restore File], rh.user_nameAS [Restored By] FROM msdb.dbo.restorehistory rh (nolock) INNER JOIN msdb.dbo.backupset bs (nolock) ON rh.backup_set_id = bs.backup_set_id INNER JOIN msdb.dbo.restorefile rf (nolock) ON rh.restore_history_id = rf.restore_history_id INNER JOIN msdb.dbo.backupmediafamily bmf (nolock) ON bmf.media_set_id = bs.media_set_id ORDER BY rh.restore_history_id DESC |
SQL Server Logshipping Kurulumu - VERITABANI.ORG 2 Mayıs 2023
[…] edilen son transaction logları kontrol edebileceğiniz scripte tıklayarak […]