3 Ocak 2011 Pazartesi

SSAS: ascmd ile birden fazla veritabanının yedeğini zaman ayarlı olarak almak

Senaryo: Windows Server 2008 R2 İşletim Sistemi üzerinde çalışan bir sunucumuz var, talep edilen ise sunucuya sadece bir tane SQL Server 2008 R2 Analysis Services Instance'ının kurulması. Yedekleme uygulamamız olan Commvault SSAS veritabanlarının yedeğini alamadığı için DBA olarak yapmamız gereken ise SSAS'teki veritabanlarının yedeklerinin zaman ayarlı olarak alınmasının sağlanması.

Bu gereksinimi gidermek için sevgili arkadaşım Batuhan Yıldız (Microsoft PFE)'dan destek aldık, çünkü konu hakkında çözüm için gereken araç gerece ulaşmak kolay değildi.

Eğer sunucuda bir SQL Server 2008 Database Engine kurulu olsaydı işimiz çok kolay olacaktı, çünkü SQL Server Agent hem XMLA kodlarını çalıştırıyor (ki veritabanlarının Backup Script'lerini çalıştırmak için bu işlevselliğe ihtiyaç var) hem de zaman ayarlı olarak çalışabiliyor.

Fakat bizim durumumuzda bir SQL Server Agent yok. SQLCMD ise XMLA kodlarını çalıştırmıyor. SQL Server'ın doğrudan kendi parçası olan başka da bir araç gereci yok.

Batuhan'dan adını ilk defa duyduğum "ascmd" isimli aracın varlığını da bu sorunla öğrenmiş oldum. "ascmd" isimli araç, tam da aradığımız gibi, SQLCMDvari bir araç ve XMLA Script'lerini çalıştırabiliyor. Fakat bu araç ile ilgili bir sorun var, SQL Server 2005 versiyonunu Codeplex'te bulabiliyorsunuz; fakat SQL Server 2008 versiyonunu internette bulmak konusunda ben muvaffak olamadım. Ancak Microsoft'taki diğer arkadaşlardan doğrudan elden alarak edinebildik bu aracı. Ayrıca şunu da belirtmek isterim ki, bu aracın uygulama halini (exe) doğrudan edinemiyorsunuz. Bu aracın kaynak kodlarını edinebiliyorsunuz ve bu kodları indirdikten sonra derlemeniz gerekiyor. Derlemek için de cscript.exe yetmiyor, Visual Studio'nun C# bileşenlerinin de yüklü olması gerekiyor.

Bizim durumumuzda birden fazla SSAS veritabanının yedeklenmesi gerekiyordu. Böyle bir durumda da aşağıdaki gibi bir Script'inin kullanılması gerekiyor. Yani "Batch" bloğunun içinde olmalı yedek alma Script'leri.




Veritabanim1

X:\BACKUP\Veritabanim1.abf
true




Veritabanim2

X:\BACKUP\Veritabanim2.abf
true



Velhasıl, "ascmd" uygulamasını ve yedekleme Script'lerini edindikten sonrası bildik hikâye. Bu Script'i bir XMLA dosyasına kaydedip aşağıdaki gibi bir komut dizisiyle Windows Task Scheduler kullanarak zaman ayarlı olarak çalıştırabilirsiniz:

ascmd -S DWANALIZ -i X:\BACKUP\ASBackupScript.xmla

Hiç yorum yok: