SQL Server 2017 ile Gelen (dm_os) DMV ve DMF’leri
  1. Anasayfa
  2. SQL Server

SQL Server 2017 ile Gelen (dm_os) DMV ve DMF’leri

0

Günlük operasyonlarda SQL Server’ın buluduğu sistem üzerinde çeşitli işlemler yapmamız gerekebiliyor.
Bunların en esnek yöntemlerinden biri de xp_cmdshell vasıtasıyla komut satırından SQL Server’ın servis kullanıcısının yetki alanı içerisinde istediğiniz işlemi yapabilirsiniz. Fakat, özellik varsayılan olarak kapalı gelir. Güvenlik zafiyetleri oluşturabileceğinden dolayı da veritabanı yöneticileri kullanımına çok sıcak bakmaz. Bu yüzden CLR kullanmanız bile gerekebilir ama artık dosya sistemi üzerinde SQL Server 2017 ile birlikte gelen DMV ve DMF sayesinde çok daha basit bir şekilde dosya sistemine erişerek ihtiyaçlarınızı karşılayabilirsiniz.

DMV

  • sys.dm_os_enumerate_fixed_drives

 

DMF

  • sys.dm_os_enumerate_filesystem
  • sys.dm_os_file_exists

 

dm_os_enumerate_fixed_drives

Bu DMV ağırlıklı olarak veritabanı yöneticilerinin işine yarayacaktır.
Sunucu üzerinde bulunan diskleri ve boş alanları görüntüleyerek raporlama yapmaları için işlerini kolaylaştıracaktır.

SELECT 
DrivePath = fixed_drive_path,
DriveType = drive_type_desc,
FreeSpace_MB = free_space_in_bytes / (1024 * 1024),
FreeSpace_GB = free_space_in_bytes / (1024 * 1024 * 1024) 
FROM sys.dm_os_enumerate_fixed_drives

Resim – 1

dm_os_file_exists
Klasör ve dosyaların sistem üzerinde bulunmalarını kontrol etmenize yaramaktadır.
Özellikle dosya üzerinden ETL işleri yapıyorsunuz sunucunuzun diskine “günlük dosyalar gelmiş mi?” ya da “Backupları başka bir diske düzgün aktarmış mıyım?” tarzında senaryolar için işinize çok yarayacaktır.
Not: Bu DMF’in aslında eski bir versiyonu da mevcut (xp_fileexist)

--Var olan klasör
SELECT *
FROM sys.dm_os_file_exists('C:\Windows\System32')
--Olmayan klasör
SELECT *
FROM sys.dm_os_file_exists('C:\Windows\System33')

--Var olan dosya
SELECT *
FROM sys.dm_os_file_exists('C:\Windows\System32\odbcad32.exe')
--Olmayan dosya
SELECT *
FROM sys.dm_os_file_exists('C:\Windows\System32\odbcad32.txt')

Resim – 2

dm_os_enumerate_filesystem
Bu DMF üzerinde ise dilediğimiz klasör ve dosya adı kombinasyonuyla arama yapabiliyoruz. Normal şartlarda bütün bu özellikleri xp_cmdshell üzerinden dir çalıştırarak ya da Get-ChildItem komutu ile powershell üzerinden sonuç alabilirsiniz. Fakat, bu detayda bir veri almak ve bunları SQL içerisinde kullanabileceğiniz bir formata çevirmek için çok daha fazla komut yazmanız gerekiyor. Hatta kodlarınızı yeterince dinamik yazamazsanız aynı kodu farklı alanlarda bile tekrar kullanamayacaksınız.
İşte tam bu noktada bu müthiş DMF imdadımıza yetişiyor. Basit bir şekilde bize tablo çıktısı olarak aldığımız bu bilgiler sayesinde rastgele oluşturulmuş isimli dosyalarımızı tarayarak ETL vb. işler için okumamız gereken dosyaları kolayca elde etmiş oluruz.
Bu nokta da son yazma tarihi ve oluşturma tarihi detayları sayesinde dosyalarımızın üzerindeki değişimleri de inceleyebilir ve raporlayabiliriz

SELECT TOP 10 *
FROM sys.dm_os_enumerate_filesystem('C:\Windows\', '*')

Resim – 3

Artık xp_cmdshell’den kullanımını biraz daha azaltarak bu pratik yöntemler ile günlük geliştirmelerimiz için bize vakit kazandıracaktır.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

TAGs: SQL Server, SQL Server 2017, Database, Yenilikler, DMV, DMF, dm_os, dm_os_enumerate_filesystem, dm_os_enumerate_fixed_drivers, dm_os_file_exists

Bu İçeriğe Tepkin Ne Oldu?
  • 0
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Gazi Üniversitesi Bilgisayar bölümü ile başladığım eğitimi Anadolu Üniversitesi İşletme mezunu olarak tamamladım. 2009 senesinden bu yana Microsoft ürünleri ile İş Zekası ve Veri Ambarı konularında pek çok farklı sektörde uçtan uca proje geliştirdim. Halen aktif olarak MS SQL Server, SSIS, SSRS, SSAS ürünleri üzerinde çalışma hayatıma devam etmekteyim.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

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