4

我使用SQL Server 2008 R2和 SSAS。

我在 SSAS 中有一些维度数据库。

我需要每天创建一个从 SSAS 的所有数据库备份的作业。

我该怎么做?

4

1 回答 1

5

所以有几种方法:

1/ 使用 Analysis Services 命令作为步骤创建 SQL 作业,每个 DB 使用类似于以下的代码创建一个 SQL 作业:

<Backup xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
  <Object>
    <DatabaseID>DBName</DatabaseID>
  </Object>
  <File>\\server\share\folder\backupFile.abf</File>
  <AllowOverwrite>true</AllowOverwrite>
</Backup>

这很好也很容易,如果你只有几个 SSAS 数据库,你不会定期删除或添加更多,维护起来相对容易

2/ 创建一个 SSAS 链接服务器,然后在作业步骤中使用常规 SQL 语句来传递您的命令(给您更多的灵活性,因为您可以使用变量来修改文件名等内容):

创建 SSAS 链接服务器

DECLARE @XMLA NVARCHAR(1000) ,
              @timeStamp NVARCHAR(35);

SET @timeStamp = CONVERT(NVARCHAR, GETDATE(), 112) + '_'
    + REPLACE(CONVERT(VARCHAR(8), GETDATE(), 108), ':', '');

SET @XMLA = N'<Backup xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
  <Object>
    <DatabaseID>dbName</DatabaseID>
  </Object>
  <File>\\server\share\folder\dbName_'
    + @timeStamp + '.abf</File>
    <AllowOverwrite>true</AllowOverwrite>
    <ApplyCompression>false</ApplyCompression>
</Backup>';

EXEC (@XMLA)  AT [SSAS_LinkedServer]

编辑:您还可以使用此方法轻松地使用以下方法从分析服务器获取 SSAS 数据库列表:

SELECT [catalog_name] FROM OPENQUERY([SSAS_LinkedServer],'select [catalog_name] from $system.dbschema_catalogs')

然后,您只需通过此列表光标,通过链接服务器为列表中的每个 DB 执行 SSAS 命令,因此这意味着如果您添加新的 SSAS 数据库,则无需手动维护作业。

3/ 使用powershell,下面的这个方法在2008 R2上不起作用,但是可以修改为直接使用SMO而不是他们在SQL Server 2012中提供的nice provider(这是我们使用的方法,下面是一个示例从我的脚本):

import-module sqlps -disablenamechecking
$server = "SERVER\INSTANCE"
$backupPath = "\\backup-server\share\SSAS\$server\"

#Get a list of the SSAS databases on the server
$ssasDBs = dir SQLSERVER:\SQLAS\$server\databases

#Backup each SSAS database on the server
foreach ($db in $ssasDBs)
{
    $extension = Get-Date -UFormat "_%Y_%m_%d_%A_%H%M%S.abf"
    $backupFile = $backupPath+$db+$extension
    try
    {
        $db.Backup($backupFile)
    }
    catch
    {
        Write-Warning "Backup of $db Failed!!!"
    }
}

此方法的优点是,如果您添加新的 SSAS 数据库,您不必更改作业,它将由脚本自动备份,无需更改。

我确信还有其他方法可以实现这一点,但这是我用来管理 SSAS 备份的 3 种方法,我通常发现 SSAS 的管理方面相当痛苦,因为它似乎有点缺乏,但也许这只是我. SQL 2012 中新的 powershell 位使它更容易。

希望这至少对您可以做什么有所帮助。

于 2013-10-30T10:21:07.583 回答