1. Ana Sayfa
  2. SQL Server
  3. SSIS’de Tarih Formatı Kullanarak SSAS Küpleri Nasıl Yedek Alınır?

SSIS’de Tarih Formatı Kullanarak SSAS Küpleri Nasıl Yedek Alınır?

SQL Management Studio ile sisteminizde varolan OLAP küplerini yedeklemek OLTP sistemlerin yedeklerini almaya kıyasla çok daha kolay. SSMS kullanarak bunu kolayca yapabiliyoruz. Aynı şekilde Integration Services içerisinden her hangi bir OLAP küpünü yada For Each Loop gibi bir task kullanarak sahip olduğumuz küpleri de kolayca yedek alabiliyoruz. Peki Integration Services ile yedekleyeceğimiz küp adını tarih formatıyla nasıl adlandırabiliriz? Bu işlemi Script Task ya da PowerShell komutları kullanarak yapabiliyorsunuz fakat daha kolay bir çözümü var.

Bu işlem için yalnızca bir tane Analysis Services Execute DDL Task kullanacağız. SSIS Toolbox’ dan task’ i sürükleyip bırakıyoruz. Çift tıklayarak Task Editor’ ı açıyoruz. Buradan DDL başlığına geliyoruz. Connection sekmesine gelerek yedeğini alacağımız OLAP küpünün bulunduğu sunucuya gerekli credential’ ları sağlıyoruz. Ardından Source Type sekmesine tıklayarak drop down list’ den Variable seçiyoruz. Daha sonra Source sekmesinden Time adında yeni bir variable tanımlıyoruz. Value Type’ ını String yapıyoruz.


Resim-1

Tanımladığımız variable’ ı View->Other Windows->Variables diyerek görebilirsiniz. Variables penceresinde Value kısmına OLAP küpünün yedeğini alacak XMLA komuntu yazacağız ve küp adına tarih ekleyeceğiz. Bunun için öncelikle SSMS içerisinden yedeğini alacağımız küpe ya da herhangi başka bir küpe giderek istediğim konfigürasyonları sağladıktan sonra Script tuşuna basarak hazır XMLA komutunu alacağım.

Bunun için SSMS’ da ilgili küpe gidip sağ tuşa basarak Backup… diyoruz. Açılan menu’ den Backup file kısmında Browse diyerek yedek alacağımız directory’ yi belirtiyoruz. Burada Selected Path kısmına ilgili folder’ in path’ ini kopyalayıp yapıştırabilirsiniz. Aynı yerde kolaylık olması için küp adını da belirtiyoruz. Geri kalan konfigürasyonları da tamamladıktan sonra Script tuşuna basarak yaptığımız işlemlerin script’ ini alıyoruz.


Resim-2

Script Action to New Query Windows diyerek XMLA komutunu alıyorum. Bu komutu variable içerisinde kullanacağız. Fakat öncesinde tarih formatı eklememiz gerekli. Variable’ ı String tipinde oluşturmuştuk dolayısıyla çift tırnaklar arasına bu XMLA komutunu yazacağız. Sonrasında oluşturduğumuz variable’ a bir expression olarak yazacağız.

Bundan önce istediğimiz tarih formatını oluşturacak expression’ ı yazıyoruz. Bu işlemi yapabilmek için oluşturduğumuz variable’ ı seçerek F4 tuşuna basıyoruz ve Property’ lere ulaşıyoruz. Expression property’ sinin olduğu yere tıklayarak Expression Builder‘ ı açıyoruz.


Resim-3

Ayrıca komut için;

(DT_STR,4,1252)DATEPART( “yyyy” , getdate() ) +
RIGHT(“0” + (DT_STR,4,1252)DATEPART( “mm” , getdate() ), 2) +
RIGHT(“0” + (DT_STR,4,1252)DATEPART( “dd” , getdate() ), 2) + “-” +
RIGHT(“0” + (DT_STR,4,1252)DATEPART( “hh” , getdate() ), 2) +
RIGHT(“0” + (DT_STR,4,1252)DATEPART( “mi” , getdate() ), 2)

Oluşturduğumuz XMLA komutunda küp adına bu expression’ ı ekleyeceğiz. Bunu  ve string concatenation için + kullanarak yapmayı unutmayın!


Resim-4

Bundan sonra oluşturduğumuz expression’ ı variable’ ın içerisine kopyalamak kalıyor demek isterdim fakat öyle olmuyor, hata alıyorsunuz. Büyük ihtimalle öncelikle yanlış yazmış olacağınızdan şüpheleneceksiniz fakat gerçekten yanlış yazmamış olabilirsiniz. Peki sorun nedir? İki farklı problem, tek sorun var diyebilirim. Problemlerden biri XMLA komutundaki çift tırnaklar  bir diğeri ise XMLA komutu içerisindeki \ kaynaklanıyor. Analysis Services’ ı ya da Integration Services Expression Builder‘ ı bunların gerçekten  ve \ olduğuna ikna etmemiz gerekiyor. Çünkü string concatenation mı yapıyorsunuz yoksa gerçekten  için mi kullanıyorsunuz bu ayrımı yapamıyor, bunun için bizim ayrıca bir şey belirtmemiz gerekli. Bunlar yerine kullanacağım sequence’ ların genel adına Escape karakterler deniyor. Aşağıda çokça işinize yarayacak bir liste bulabilirsiniz. Yazdığınız expression’ daki  ve \ ları aşağıdaki listede karşılık gelen Escape karakterlerle değiştirirseniz sorun çözülecektir.


Resim-5

Gerekli değişimleri yaptıktan sonra expression’ ı Evaluate ettiğinizde XMLA komutunun düzgün bir şekilde, String olarak geldiğini göreceksiniz. OK‘ ye basıp devam ediyoruz fakat henüz bitirmiş değiliz.


Resim-6

Son fakat bir o kadar da unutulan bir hamle de variable için yazdığımız expression’ ı etkin hale getirmek. Bu variable’ ı işleme sokarken yazdığımız expression’ ı kullanmasını sağlayacağız. Aksi taktirde paketi çalıştırdığınızda işlem başarısız olacaktır. Bunun için variable’ a tıklayıp yine F4‘ e basarak Variable Property‘ lerine gidiyoruz. Buradan EvaluateAsExpression property’ sini True yapmamız gerekiyor.


Resim-7

Şu anda yedek almak için her şey hazır. Paketi çalıştırabiliriz.


Resim-8

Hata almış olabilirsiniz, bunun sebebi XMLA komutu içerisinde “gereksiz space’ ler” kullanmanız. <File> </File> tag’ lerinin başında ve en sonunda space karakteri kullanmayın.

Örnek doğru kullanım;

<File>Bu şekilde yazarsanız bir sorun çıkmayacaktır.</File>

Örnek yanlış kullanım;

<File>    Bu
Şekilde yazarsanız
hata alırsınız    .
</File>

Referanslar

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

www.mshowto.org

Yorum Yap

Yazar Hakkında

Özgür Erecekler, Bilgisayar Mühendisliği mezunu olup kariyerini veri üzerine çalışmalara adamıştır. Şu anda Bilge Adam Veri Yönetimi ve İş Zekası departmanında Kıdemli Danışman olarak çalışmalarına devam etmektedir.

Yorum Yap