【问题标题】:SSAS Tabular - Deploy to multiple modelsSSAS 表格 - 部署到多个模型
【发布时间】:2019-03-01 01:48:29
【问题描述】:
我们正在尝试为 60-100 个客户创建一个 SSAS 表格模型。
关于创建单个模型并处理所有客户的数据非常耗时(直到数据刷新完成,每个客户都需要等待最新数据 - 我们每 15 分钟更新一次)。
但是,创建多个表格模型很容易重新处理和排除故障,但很难维护或部署更改。如果我需要添加新的度量或表格,我想应用于所有模型。
我想知道是否有人可以建议跨不同表格模型部署更改/添加的最佳方法。
【问题讨论】:
标签:
deployment
ssas
ssas-tabular
【解决方案1】:
如果您使用过 SSIS,则可以使用它跨多个站点进行部署。下面对此进行了概述。这将做一个列表,列出您提供的服务器名称,遍历它们,并为每个更新的表格模型执行 DDL。同样的方法也可用于多维数据集处理,将创建 DDL 替换为处理脚本。如果模型是第一次部署到服务器上,请确保在任何客户端工具查询或使用它之前对其进行处理,并确保对更改的对象的处理也得到相应的处理。
- 在 SSMS 中连接到 SSAS 时,右键单击模型,选择 Script > Script Database As > Create or Replace To > 然后选择输出脚本的位置。请注意,出于安全目的,这将不包含密码,并且需要相应地处理。
- 创建一个 SSIS 包。在包中创建一个分析服务器连接管理器。这可以设置为当前存在此表格数据库的服务器。
- 创建一个字符串变量并留空。这可以称为 DeployServerName。还要创建一个对象变量,可以称为ServerList。在 SSAS 连接管理器上,转到属性窗口(按
F4),然后选择 Expressions 省略号。在出现的窗口中,选择 ServerName 属性并将 DeployServerName 变量设置为表达式。这将允许服务器名称更改为多个服务器进行部署。
- 在数据流中添加执行 SQL 任务。您将在此处获取要部署到的服务器名称。如果它们存储在主/查找表中,只需选择包含服务器名称的列作为 SQL 语句。您还可以使用
UNIONs 选择纯文本单独添加目标服务器名称。
示例
SELECT 'Server1' AS DestServer
UNION
SELECT 'Server2' AS DestServer
- 在执行 SQL 任务中,将
ResultSet 属性设置为 Full Result Set。然后在结果集窗格中,为Result Name 输入0,为Variable Name 字段输入之前创建的对象变量(ServerList)。
- 接下来在执行 SQL 任务之后创建一个 Foreach 循环并将其连接到它。使用
Foreach ADO Enumerator Enumerator 类型并选择对象变量(ServerList)作为ADO Object Source Variable。在“变量映射”窗格中,将字符串变量 (DeployServerName) 放在索引 0。
- 在 Foreach 循环内添加一个 Analysis Services 执行 DDL 任务。使用您创建的 SSAS 连接管理器作为连接,直接输入作为
SourceType,并输入在 SSMS 中生成的脚本作为 SourceDirect 语句。