通过SSMS作业备份SSAS,并附加了日期



我想通过SSMS中的SQL Server代理作业备份我的SSA数据库 - 我还想将一天的编号附加到文件末尾并允许覆盖。这将确保我只有一个月的备份(即1月1日备份将被称为backup_01.abf,1月2日= backup_02.abf等(

i通过SSM连接到SSAS DB并脚本拼写出备份过程,如下所示:

    {
      "backup": {
        "database": "ExampleDB",
        "file": "Backup.abf",
        "allowOverwrite": true,
        "applyCompression": false
      }
    }

我相信我可以简单地将其添加为服务器代理作业的一步,作为SQL Server Analysis服务命令。

但是,我该如何将一个月的一天附加到文件?

似乎找不到太多在线

[edit]

结合了Vaishali对以下响应的组合,以及我在网上发现的另一篇文章,我执行了以下操作:

创建了链接服务器(link_ssas(生成以下脚本:

    Declare @XMLA nvarchar(1000),
        @DateSerial nvarchar(35)
    -- Get Day Number from GETDATE()
    Set @DateSerial =   RIGHT('0' + RTRIM(DAY(GETDATE())),2)
    -- Create the XMLA string
    Set @XMLA = N'<Backup xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
      <Object>
        <DatabaseID>ExampleDB</DatabaseID>
      </Object>
      <File>C:bakBackup_' + @DateSerial + '.abf</File>
    </Backup>'
    -- Execute the string across the linked server
    Exec (@XMLA) AT Link_SSAS;

上面的XMLA如果我只是通过SSMS中的查询窗口执行的,则可以完美运行但是,当我尝试将XMLA放入工作步骤时,我会发现一个错误

将作业类型设置为t-sql,我得到了:

指定的" @server"无效(SP_HELPSERVER返回有效值(

如果我运行sp_helpserver,它确实将我的链接服务器显示为在那里。尝试断开/重新连接到服务器。

您可以通过SQL执行'Dynamic XMLA脚本'的执行。下面的链接将很有用:

https://www.mssqltips.com/sqlservertip/2790/dynamic-xmla-using-tsql-for-sql-sql-server-analysis-services/

最新更新