{"id":27,"date":"2007-07-26T20:01:16","date_gmt":"2007-07-27T01:01:16","guid":{"rendered":"http:\/\/www.ssas-info.com\/VidasMatelisBlog\/27_script-to-backup-analysis-services-2005-databases"},"modified":"2009-06-15T18:23:25","modified_gmt":"2009-06-15T23:23:25","slug":"script-to-backup-analysis-services-2005-databases","status":"publish","type":"post","link":"https:\/\/www.ssas-info.com\/VidasMatelisBlog\/27_script-to-backup-analysis-services-2005-databases","title":{"rendered":"Script to backup Analysis Services 2005 databases"},"content":{"rendered":"<p>Recently I was asked for a generic script that does backup of all Analysis Services 2005 databases on one server.<\/p>\n<p>\u00a0I quickly wrote SSIS package that does just that. You can download this package from <a href=\"http:\/\/www.ssas-info.com\/analysis-services-scripts\/226-ssis-package-to-backup-all-analysis-services-databases-on-one-instance\" target=\"_blank\">here.<\/a><\/p>\n<blockquote><p>Imports System<br \/>\nImports System.Data<br \/>\nImports System.Math<br \/>\nImports Microsoft.SqlServer.Dts.Runtime<\/p>\n<p>Public Class ScriptMain<br \/>\n\u00a0\u00a0\u00a0 Public Sub Main()<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Dim sSSASServerName As String = CStr(Dts.Variables(&#8220;SSASServerName&#8221;).Value)<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Dim sBackupLocation As String = CStr(Dts.Variables(&#8220;BackupLocation&#8221;).Value)<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 If Right(sBackupLocation, 1) &lt;&gt; &#8220;\\&#8221; Then sBackupLocation = sBackupLocation + &#8220;\\&#8221;<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Dim Locations() As Microsoft.AnalysisServices.BackupLocation<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Dim oServer As New Microsoft.AnalysisServices.Server<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 oServer.Connect(sSSASServerName) &#8216; connect to the server and start scanning down the object hierarchy<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Dim oDB As Microsoft.AnalysisServices.Database<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 For Each oDB In oServer.Databases<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8216;If oDB.Name = &#8220;AdventureWords&#8221; Then &#8216; here you can include or excluded databases<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 oDB.Backup(sBackupLocation &amp; oDB.Name &amp; &#8220;_&#8221; &amp; Now().ToString(&#8220;yyyyMMdd_hhmmss&#8221;) &amp; &#8220;.abf&#8221;, True, False, Locations, True)<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8216;End If<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Next<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Dts.TaskResult = Dts.Results.Success<br \/>\n\u00a0\u00a0\u00a0 End Sub<br \/>\n\u00a0<br \/>\nEnd Class<\/p><\/blockquote>\n<p>If you wish you can use CaptureXML technique (described in my previous blogs) for doing backups in parallel, but I\u00a0usually like to leave\u00a0some server power to users so they can query data while backups are\u00a0executed. Running multiple database backups in parallel could have\u00a0huge performance impact for end user querying.\u00a0<\/p>\n<p>You can execute this package from command line and pass parameters that specify server name and location:<\/p>\n<blockquote><p>dtexec \/FILE &#8220;C:\\DTSX_Scripts\\DWBackupOLAPDBs.dtsx&#8221; \/Set \\package.variables[BackupLocation].Value;c:\\NewBackupLocation\\ \/Set \\package.variables[SSASServerName].Value;NewSSASServerName<\/p><\/blockquote>\n<p>When I have to write\u00a0a script to backup one or a few databases with a known name, then I usualy use XMLA command:<\/p>\n<blockquote>\n<p class=\"MsoNormal\">&lt;Backup xmlns=&#8221;http:\/\/schemas.microsoft.com\/analysisservices\/2003\/engine&#8221;&gt;<br \/>\n\u00a0 &lt;Object&gt;<br \/>\n\u00a0\u00a0\u00a0 &lt;DatabaseID&gt;MyDBName&lt;\/DatabaseID&gt;<br \/>\n\u00a0 &lt;\/Object&gt;<br \/>\n\u00a0 &lt;File&gt;c:\\BackupLocation\\MyDBName.abf&lt;\/File&gt;<br \/>\n&lt;\/Backup&gt;<\/p><\/blockquote>\n<p>\u00a0This XMLA script could be executed using one of these methods:<\/p>\n<ul>\n<li>SSIS package using control flow item &#8220;Analysis Services Execute DDL task&#8221;<\/li>\n<li>SQL Server Job create step with type &#8220;SQL Server Analysis Services command&#8221;<\/li>\n<li>using ascmd.exe utility.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Recently I was asked for a generic script that does backup of all Analysis Services 2005 databases on one server. \u00a0I quickly wrote SSIS package that does just that. You can download this package from here. Imports System Imports System.Data Imports System.Math Imports Microsoft.SqlServer.Dts.Runtime Public Class ScriptMain \u00a0\u00a0\u00a0 Public Sub Main() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Dim sSSASServerName As [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.ssas-info.com\/VidasMatelisBlog\/wp-json\/wp\/v2\/posts\/27"}],"collection":[{"href":"https:\/\/www.ssas-info.com\/VidasMatelisBlog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ssas-info.com\/VidasMatelisBlog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ssas-info.com\/VidasMatelisBlog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ssas-info.com\/VidasMatelisBlog\/wp-json\/wp\/v2\/comments?post=27"}],"version-history":[{"count":2,"href":"https:\/\/www.ssas-info.com\/VidasMatelisBlog\/wp-json\/wp\/v2\/posts\/27\/revisions"}],"predecessor-version":[{"id":173,"href":"https:\/\/www.ssas-info.com\/VidasMatelisBlog\/wp-json\/wp\/v2\/posts\/27\/revisions\/173"}],"wp:attachment":[{"href":"https:\/\/www.ssas-info.com\/VidasMatelisBlog\/wp-json\/wp\/v2\/media?parent=27"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ssas-info.com\/VidasMatelisBlog\/wp-json\/wp\/v2\/categories?post=27"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ssas-info.com\/VidasMatelisBlog\/wp-json\/wp\/v2\/tags?post=27"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}