从管理sql Server Analysis Services实例的角度来看,DBA必须了解SSAS如何才能正确有效地管理它?
解决方法
所以,你是一个sql Server DBA,你刚刚继承了一些蓝色的立方体来管理.关于SSAS管理的快速速成课程似乎是有序的.
从管理的角度来看,SSAS是一个相当简单,如果资源匮乏的应用程序.它比DBMS平台简单,虽然在几个方面有所不同.此外,还有一些管理任务,例如特定于SSAS的基于使用情况的优化,您可能需要了解它们.
备份配置文件
所有配置数据都存在于名为msdmsrv.ini的文件中.这是一个XML文件.如果您通过SSMS修改配置(连接到服务器,右键单击服务器,选择属性),您可以设置将在启动时中断服务器的选项.在玩任何东西之前先拿一份msmdsrv.ini.
重要参数
记忆:SSAS是一个圣经记忆猪.如果可能的话,它喜欢64位版本,并且内存很多.参数‘Memory\LowMemoryLimit’ and ‘Memory\HighMemoryLimit’控制内存使用策略. LowMemoryLimit不是最小内存分配.这是一个阈值,SSAS认为系统内存不足并开始从缓存中清除内容. HighMemoryLimit是它将使用的绝对最大值.
请注意,SSAS将其数据存储在文件中(许多文件 – 它没有任何与文件组等效的机制),因此它对这些文件大量使用O / S文件系统缓存.请注意,这些限制的默认值分别约为计算机内存的65%和80%,因此如果您希望OLAP服务器与sql Server实例共存,则需要将其关闭以使其不会因为内存而烦恼数据库服务器.
目录:感兴趣的五个参数包括:DataDir,AllowedBrowsingFolders,BackupDir,LogDir和TempDir. DataDir和AllowedBrowsingFolders是最重要的.
> AllowedBrowsingFolders会影响OLAP服务器将其数据文件放入的文件夹列表.任何具有用户界面的内容(例如部署向导)都会将您的选项限制为AllowedBrowsingFolders中的列表.该值是管道(‘|’)分隔的目录列表.
> DataDir是文件的默认路径.如果要将多维数据集分区到多个卷上,则需要适当地配置AllowedBrowsingFolders.
> LogDir是服务器放置各种日志文件的位置,包括飞行记录器和查询日志.飞行记录器日志用于故障排除,OLAP查询日志用于基于使用的优化(稍后将详细介绍).
> TempDir是SSAS在处理时创建的临时文件的位置.如果您正在处理大量数据并出现性能问题,则可以将其从数据转移到另一个卷上.
> BackupDir就是它所说的.
杂:
一些杂项参数也可能是有意义的.您可能需要调整的几个集合是:
> DefaultMaxDrillthroughRows:这限制了钻取行集的大小.您可能需要弄清楚这一点以允许更多.
>线程/超时:您可能需要调整这些.我从来没有打扰过.
这些是基础知识.您可能需要根据具体原因调整其他人,但您可以做相应的功课.
操作
部署:您可以在BIDS中编译项目并获取可以使用deployment wizard.部署的一组文件您可能需要调整分区的文件路径以及其他一些内容.
编程和批处理的管理任务:通过名为XML / A的Web服务API向SSAS发出命令. Microsoft提供了一个用于发布MDX和XML / A connands的交互式工具.如果必须在XML / A命令中嵌入MDX,请注意是否需要使用XML转义符,例如& amp;.这不是SSMS中MDX编辑器和查询工具的问题.
脱机作业可以通过各种SSIS多维数据集处理任务,名为ascmd.exe的命令行实用程序或名为AMO的.Net API完成.您还可以获得各种PowerShell工具等. ascmd.exe获取XML / A文件并将其发布到服务器.如果你必须以编程方式对文件进行frig,那么最好不要使用.Net工具,而不是尝试从.cmd脚本中操作XML文件.
operations guide更详细地介绍了这一点.
安全
SSAS的安全性相当简单.它具有全局“服务器”角色,在整个系统中具有管理权限.遗憾的是,您需要“服务器”来创建数据库,因此您很可能需要将其授予您拥有的任何开发OLAP服务器上的开发人员.
其他安全性只能应用于单个多维数据集模式.您可以将单个项目上的读取,处理,钻取,回写等权限授予模式中的角色. OLAP架构上的角色可以在BIDS中定义,并与多维数据集一起部署.可以通过SSMS将AD组或用户分配给这些角色.
可以在here.看到如何以编程方式管理角色成员资格的示例
基于使用的优化
作为一名DBA,您可能会参与其中,但首先要了解一下有关物理存储的问题. SSAS通过计算和保持预先构建的聚合以及基础数据来工作.如果通过命中聚合来满足查询,则OLAP服务器将优先使用此基础数据,因为聚合将涉及更少的I / O,因此检索数据会更快.
但是,您必须确定要计算的聚合(即,要生成汇总的维度属性的组合). BIDS有一个工具,可以对此进行猜测并为您生成一些.某些工具(如BIDS helper)也允许您手动编辑聚合.
基于使用情况的优化通过记录发布到服务器的实际查询,然后使用该日志计算出一组对这些查询最佳的聚合来工作.作为DBA,您可以设置OLAP查询日志记录以捕获此数据,然后在多维数据集上运行优化.可以在here.找到关于设置查询日志的模糊
执行此操作的工具称为‘Usage based optimisation wizard.’,它位于SSMS中,可以通过在资源管理器中打开分区并从右键单击菜单中选择“基于使用情况的优化”来找到.
performance guide更详细地进行了调整.
MDX
MDX看起来有点像sql,但工作方式非常不同.关于’MDX for sql程序员’的论文本身就是一个完整的主题.我建议阅读一些关于它的教程和/或获取一本书.此外,如果您有任何问题,dba.se的友好人员可以提供帮助.
MDX没有任何过滤行的概念.该语言有很多设置操作来计算在query1的各个轴上显示的内容,加上’SELECT’.您可以使用看起来有点像CTE的语句来定义度量和集合.
一些介绍性的MDX编程资源可以在here和here找到(这个很老很长很长).关于这个问题还有一些好书; this SO question对SSAS资源有相当多的扇动.
1虽然它确实有非空操作符,但会将结果限制为实际拥有数据的组合.大多数MDX查询包括定义要在轴上显示的切片,并且必须使用非空操作符以避免返回返回组合级别数量的空单元格的查询.