首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建从SSAS数据库备份的作业?

如何创建从SSAS数据库备份的作业?
EN

Stack Overflow用户
提问于 2013-10-30 06:31:20
回答 1查看 3.2K关注 0票数 4

我使用SQL Server 2008 R2和SSAS。

我在SSAS中有一些维度的DataBase。

我需要创建一个工作,以弥补从所有DataBase的SSAS在每一天。

我怎么能做到呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-30 10:21:07

所以有几种方法:

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

代码语言:javascript
运行
复制
<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链接服务器

代码语言:javascript
运行
复制
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]

编辑:您还可以使用此方法轻松地使用以下方法从Analysis获取SSAS数据库的列表:

代码语言:javascript
运行
复制
SELECT [catalog_name] FROM OPENQUERY([SSAS_LinkedServer],'select [catalog_name] from $system.dbschema_catalogs')

然后,您只需浏览这个列表,通过链表中的每个DB通过链接服务器执行SSAS命令,这意味着如果您添加了一个新的SSAS数据库,就不需要手动维护作业。

3/使用powershell,下面的方法在2008年的R2上不起作用,但可以修改为直接使用SMO,而不是它们在Server 2012中提供的很好的提供程序(这是我们使用的方法,下面是我的脚本中的示例):

代码语言:javascript
运行
复制
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位使其更容易实现。

希望这至少对你能做些什么有所帮助。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19675355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档