使用 SQL Server 代理计划 SSAS 管理任务

使用 SQL Server 代理服务,可以计划 Analysis Services 管理任务,以所需的顺序和时间运行。 计划任务可帮助你自动执行定期或可预测周期上运行的进程。 可以计划管理任务,例如多维数据集处理,以在业务活动缓慢期间运行。 还可以通过创建 SQL Server 代理作业中的作业步骤来确定任务运行的顺序。 例如,可以处理多维数据集,然后执行多维数据集的备份。

作业步骤可让您控制执行流。 如果一个作业失败,可以将 SQL Server 代理配置为继续运行剩余的任务或停止执行。 还可以将 SQL Server 代理配置为发送有关作业执行成功或失败的通知。

本主题演示了使用 SQL Server 代理运行 XMLA 脚本的两种方法。 第一个示例演示如何计划单个维度的处理。 示例二演示如何将处理任务合并到按计划运行的单个脚本中。 若要完成本演练,需要满足以下先决条件。

先决条件

必须安装 SQL Server 代理服务。

默认情况下,任务在服务帐户下运行。 在 SQL Server 2012 中,SQL Server 代理的默认帐户是 NT Service\SQLAgent$<instancename>。 若要执行备份或处理任务,此帐户必须是 Analysis Services 实例上的系统管理员。 有关详细信息,请参阅授予服务器管理员权限(Analysis Services)。

还应具有要使用的测试数据库。 可以从 Analysis Services 多维教程部署 AdventureWorks 多维示例数据库或项目,以在本演练中使用。 有关详细信息,请参阅 安装 Analysis Services 多维建模教程的示例数据和项目

示例 1:在计划任务中处理维度

此示例演示如何创建和计划处理维度的作业。

Analysis Services 定时任务是嵌入在 SQL Server 代理作业中的 XMLA 脚本。 此作业计划按照指定的时间和频次运行。 由于 SQL Server 代理是 SQL Server 的一部分,因此可以使用数据库引擎和 Analysis Services 来创建和计划管理任务。

创建用于在 SQL Server 代理作业中处理维度的脚本

  1. 在 SQL Server Management Studio 中,连接到 Analysis Services。 打开数据库文件夹并查找维度。 右键单击维度并选择“ 进程”。

  2. 在“进程维度”对话框中,在“对象”列表下的“进程选项”列中,验证此列的选项是否为“进程已满”。 如果不是,请在“ 进程选项”下单击该选项,然后从下拉列表中选择“ 进程已满 ”。

  3. 单击脚本

    此步骤将打开一个 XML 查询 窗口,其中包含处理维度的 XMLA 脚本。

  4. 在“ 进程维度 ”对话框中,单击“ 取消 ”关闭对话框。

  5. XMLA 查询 窗口中,突出显示 XMLA 脚本,右键单击突出显示的脚本,然后选择“ 复制”。

    此步骤将 XMLA 脚本复制到 Windows 剪贴板。 可以将 XMLA 脚本保留在剪贴板中,或将其粘贴到记事本或其他文本编辑器中。 下面是 XMLA 脚本的示例。

    <Batch xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">  
     <Parallel>  
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
        <Object>  
          <DatabaseID>Adventure Works DW Multidimensional</DatabaseID>  
          <DimensionID>Dim Account</DimensionID>  
        </Object>  
        <Type>ProcessFull</Type>  
        <WriteBackTableCreation>UseExisting</WriteBackTableCreation>  
      </Process>  
     </Parallel>  
    </Batch>  
    

创建和计划维度处理作业

  1. 连接到数据库引擎的实例,然后打开对象资源管理器。

  2. 展开“SQL Server 代理”

  3. 右键单击“ 作业 ”,然后选择“ 新建作业”。

  4. 在“ 新建作业 ”对话框中,在 “名称”中输入作业名称。

  5. “选择页面”下,选择 “步骤”,然后单击“ 新建”。

  6. 在“ 新建作业步骤 ”对话框中,在 “步骤名称”中输入步骤名称。

  7. 服务器中,键入 localhost 以使用 Analysis Services 的默认实例;对于命名实例,键入 localhost\<实例名称>。

    如果要从远程计算机运行作业,请使用运行作业的服务器名称和实例名称。 使用默认实例的格式<服务器名称>,对<命名实例使用服务器名称>\<实例名称>。

  8. “类型”中,选择 “SQL Server Analysis Services 命令”。

  9. “命令”中,右键单击并选择“ 粘贴”。 在上一步中生成的 XMLA 脚本应显示在命令窗口中。

  10. 单击 “确定”

  11. “选择页面”下,单击“ 计划”,然后单击“ 新建”。

  12. 在“ 新建作业计划 ”对话框中,在 “名称”中输入计划名称,然后单击“ 确定”。

    此步骤将在星期日凌晨12:00设定计划。 下一步演示如何手动执行作业。 还可以在监控作业时指定一个执行作业的计划。

  13. 在“ 新建作业 ”对话框中,单击“ 确定”。

  14. 对象资源管理器中,展开 “作业”,右键单击创建的作业,然后在 “步骤”中选择“启动作业”。

    由于作业只有一个步骤,因此作业将立即执行。 如果作业包含多个步骤,则可以选择作业应启动的步骤。

  15. 作业完成后,单击“ 关闭”。

示例 2:批处理计划任务中的维度和分区

此示例中的过程展示了如何创建和安排作业以批处理 Analysis Services 数据库的维度,并同时处理依赖于该维度以进行聚合的多维数据集分区。 有关 Analysis Services 对象的批处理的详细信息,请参阅批处理(Analysis Services)。

在 SQL Server 代理作业中创建用于批处理维度和分区的脚本

  1. 使用相同的数据库,展开 “维度”,右键单击 “客户 ”维度,然后选择“ 进程”。

  2. 在“进程维度”对话框中的“对象”列表下的“进程选项”列中,验证此列的选项是否为“进程已满”。

  3. 单击脚本

    此步骤将打开一个 XML 查询 窗口,其中包含处理维度的 XMLA 脚本。

  4. 在“ 进程维度 ”对话框中,单击“ 取消 ”关闭对话框。

  5. 展开 多维数据集,展开 Adventure Works,展开 度量值组,展开 Internet 销售,展开 分区,右键单击列表中的最后一个分区,然后选择“ 进程”。

  6. 在“进程分区”对话框中的“对象”列表下的“进程选项”列中,验证此列的选项是否为“进程已满”。

  7. 单击脚本

    此步骤将打开第二个 XML 查询 窗口,其中包含处理分区的 XMLA 脚本。

  8. 在“ 进程分区 ”对话框中,单击“ 取消 ”关闭编辑器。

    此时,您必须合并这两个脚本,并确保首先处理维度问题。

    警告

    如果首先处理分区,则后续的维度处理会导致该分区变得未处理。 然后,分区需要第二个处理才能达到已处理状态。

  9. 在包含处理分区的 XMLA 脚本的 XMLA 查询 窗口中,突出显示 Batch 标签和 Parallel 标签内的代码,右键单击突出显示的脚本,然后选择 复制

    <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
        <Object>  
          <DatabaseID> Adventure Works DW Multidimensional</DatabaseID>  
          <CubeID>Adventure Works</CubeID>  
          <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>  
          <PartitionID> Internet_Sales_2004</PartitionID>  
        </Object>  
        <Type>ProcessFull</Type>  
        <WriteBackTableCreation>UseExisting</WriteBackTableCreation>  
      </Process>  
    
  10. 打开包含处理维度的 XMLA 脚本的 XMLA 查询 窗口。 在 </Process> 标签左侧的脚本中右键单击,然后选择“粘贴”。

    以下示例显示了修订后的 XMLA 脚本。

    <Batch xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">  
     <Parallel>  
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
        <Object>  
          <DatabaseID>Adventure Works DW Multidimensional</DatabaseID>  
          <DimensionID>Dim Customer</DimensionID>  
        </Object>  
        <Type>ProcessFull</Type>  
        <WriteBackTableCreation>UseExisting</WriteBackTableCreation>  
      </Process>  
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
        <Object>  
          <DatabaseID>Adventure Works DW Multidimensional</DatabaseID>  
          <CubeID>Adventure Works</CubeID>  
          <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>  
          <PartitionID>Internet_Sales_2004</PartitionID>  
        </Object>  
        <Type>ProcessFull</Type>  
        <WriteBackTableCreation>UseExisting</WriteBackTableCreation>  
      </Process>  
     </Parallel>  
    </Batch>  
    
  11. 突出显示修订后的 XMLA 脚本,右键单击突出显示的脚本,然后选择“ 复制”。

  12. 此步骤将 XMLA 脚本复制到 Windows 剪贴板。 可以将 XMLA 脚本保留在剪贴板中,将其保存到文件中,或将其粘贴到记事本或其他文本编辑器中。

创建和计划批处理作业

  1. 连接到 SQL Server 的实例,然后打开对象资源管理器。

  2. 展开“SQL Server 代理”。 如果未运行,请启动服务。

  3. 右键单击“ 作业 ”,然后选择“ 新建作业”。

  4. 在“ 新建作业 ”对话框中,在 “名称”中输入作业名称。

  5. “步骤”中,单击“ 新建”。

  6. 在“ 新建作业步骤 ”对话框中,在 “步骤名称”中输入步骤名称。

  7. “类型”中,选择 “SQL Server Analysis Services 命令”。

  8. “运行方式”中,选择 SQL Server 代理服务帐户。 请回忆从“先决条件”部分看到的内容:此帐户必须在 Analysis Services 上具有管理权限。

  9. “服务器”中,指定 Analysis Services 实例的服务器名称。

  10. “命令”中,右键单击并选择“ 粘贴”。

  11. 单击 “确定”

  12. 在“ 计划 ”页中,单击“ 新建”。

  13. 在“ 新建作业计划 ”对话框中,在 “名称”中输入计划名称,然后单击“ 确定”。

    此步骤将在星期日凌晨 12:00 安排时间表。 下一步演示如何手动执行作业。 你还可以选择一个计划,以便在监视作业时执行该作业。

  14. 单击 “确定” 关闭对话框。

  15. 对象资源管理器中,展开 “作业”,右键单击创建的作业,然后在 “步骤”中选择“启动作业”。

    由于作业只有一个步骤,因此作业将立即执行。 如果作业包含多个步骤,则可以选择作业应启动的步骤。

  16. 作业完成后,单击“ 关闭”。

另请参阅

处理选项和设置(分析服务)
为 Analysis Services 中的管理任务编写脚本