SSIS’ de Tarih Formatı Kullanarak SSAS Küpleri Nasıl Yedeklenir?

SQL Server Management Studio kullanarak hali hazırda sahip olduğunuz OLAP küplerinin yedeğini almak, OLTP sistemlerin yedeklerini almaya kıyasla çok daha kolay. SSMS kullanarak bunu basitçe 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 yedekleyebiliyoruz. 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.
Image
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.
Image
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.
Image
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!
Image
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.
Image
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.
Image
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.
Image
Şu anda yedek almak için her şey hazır. Paketi çalıştırabiliriz.
Image
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>

Reklamlar
Bu yazı SSIS içinde yayınlandı ve , , , , olarak etiketlendi. Kalıcı bağlantıyı yer imlerinize ekleyin.

3 Responses to SSIS’ de Tarih Formatı Kullanarak SSAS Küpleri Nasıl Yedeklenir?

  1. Geri bildirim: SSIS’le küp yedekleme otomasyonu | Veri Yönetimi Departmanından Haberler

  2. analyzerhakan dedi ki:

    Biz bu işleri genelde SQL Server Agent Job içine direkt XMLA script yazarak yapıyoruz. Bu da farklı bir yaklaşım. Hoş olmuş:)

  3. analyzerhakan dedi ki:

    Reblogged this on analyzerhakan and commented:
    İşe yarar bir makale

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s