MSSQL Server Backup Tamamlanma Süresini ve Boyutunu Bulan Komut

Büyük sistemlerde veritabanlarının backuplarının aynı job altında çalışması tavsiye edilmez. Uzun süren veritabanı backuplarımızın ayrı bir job şeklinde backup joblarımızın çakışmayacağı şekilde oluşturulması gerekmektedir.

Alınan backuplarımızda her bir veritabanının backup zamanını görüp senaryolarımızı backup zamanlarını göre oluşturabiliriz.

Aşağıdaki komut instance altında bulunan veritabanlarının backup süresini vermektedir. DB_NAME kısmında veritabanı ismini type kısmında D ifadesiyle full backup alınan ifadelerin çağrılması gerektiğini belirtiyoruz.

use msdb
go
select b.backup_size/1024/1024/1024 as Backup_size,
b.database_name,b.backup_start_date,
b.backup_finish_date,
(CONVERT(varchar(6), DATEDIFF(s, b.backup_start_date, b.backup_finish_date)/3600) + 'H:' + RIGHT('0' + CONVERT(varchar(2),
(DATEDIFF(s, b.backup_start_date, b.backup_finish_date) % 3600) / 60), 2) + 'M:' + RIGHT('0' + CONVERT(varchar(2),
DATEDIFF(s, b.backup_start_date, b.backup_finish_date) % 60), 2)+'S')
AS [Total Time],
m.physical_device_name,
b.type
from backupset b,backupmediafamily m
where m.media_set_id=b.media_set_id
--and database_name='DB_NAME' 
--and b.type='D'
order by b.backup_start_date desc

Database seçim işlemini yorum satırı olarak yaparsak tüm databaselerin full backup’ını göstermektedir. Full backup olduğunu type kısmındaki D ifadesinden anlıyoruz. Eğer log backup veya diff backup backupları üzerinde çalışılması isteniyorsa L veya I ifadesi yazılabilir.

use msdb
go
select b.backup_size/1024/1024/1024,
b.database_name,b.backup_start_date,
b.backup_finish_date,
(CONVERT(varchar(6), DATEDIFF(s, b.backup_start_date, b.backup_finish_date)/3600) + 'H:' + RIGHT('0' + CONVERT(varchar(2),
(DATEDIFF(s, b.backup_start_date, b.backup_finish_date) % 3600) / 60), 2) + 'M:' + RIGHT('0' + CONVERT(varchar(2),
DATEDIFF(s, b.backup_start_date, b.backup_finish_date) % 60), 2)+'S')
AS [Total Time],
m.physical_device_name,
b.type
from backupset b,backupmediafamily m
where m.media_set_id=b.media_set_id
--and database_name='DB_NAME' 
and b.type='D'
order by b.backup_start_date desc

Sadece  belirli veritabanlarının full backupını görmek için komut aşağıdaki şekilde değiştirilebilir.

use msdb
go
select b.backup_size/1024/1024/1024 as Backup_size,
b.database_name,b.backup_start_date,
b.backup_finish_date,
(CONVERT(varchar(6), DATEDIFF(s, b.backup_start_date, b.backup_finish_date)/3600) + 'H:' + RIGHT('0' + CONVERT(varchar(2),
(DATEDIFF(s, b.backup_start_date, b.backup_finish_date) % 3600) / 60), 2) + 'M:' + RIGHT('0' + CONVERT(varchar(2),
DATEDIFF(s, b.backup_start_date, b.backup_finish_date) % 60), 2)+'S')
AS [Total Time],
m.physical_device_name,
b.type
from backupset b,backupmediafamily m
where m.media_set_id=b.media_set_id
and database_name in('DB_NAME1','DB_NAME2','DB_NAME3')
and b.type='D'
order by b.backup_start_date desc

Not: Yukarıdaki backup süreleri ile ilgili backup job’ın view history kısmında olan sürelerin farklı olmasının sebebi açıklayalım. SQL Agent Job History (View History kısmında görülen süre), Job’ın tüm çalıştığı süreyi verir. Sadece backup işlemi değil, başlangıç, dosya kontrolü, parçalama, temizleme, loglama vb. tüm işlemleri kapsar.

Job süresi:
• SQL Agent, job çalışmaya başladığı andan bittiği ana kadar süreyi hesaplar.
• Bu sürede backup öncesi kontroller (örneğin: disk alanı kontrolü, log mesajları), script’in başında veya sonunda yer alan işlemler (örnek: xp_cmdshell, log temizliği vb.) varsa onların süresi de dahil olur.

backupset süresi:
• Sadece BACKUP DATABASE komutunun kendisi ne kadar sürdüyse onu gösterir.
• Yani bu süre “gerçek backup alma süresi”dir.

Bu makalede mssql server üzerinde backup tamamlanma süresini bulmuş olduk. Başka makalede görüşmek dileğiyle..

De ki: “Şüphesiz benim namazım, bütün ibâdetlerim, hayatım ve ölümüm, Âlemlerin Rabbi Allah içindir.” En’am Suresi, 162. Ayet

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir