操作SSAS数据库的方法有很多,是否有一种可以方法可以通过脚本自动去做这些事呢,比如处理分区,创建备份以及监视SSAS的运行状况。

原文地址:

http://www.mssqltips.com/sqlservertip/2937/using-powershell-for-sql-server-analysis-services-tasks--part-1/

PowerShell作为命令行工具来自动化处理SSAS任务就是一个不错的选择。因为是围绕SSAS处理任务的话题,所以阅读此篇需要具备一些SSAS的基础知识,这里我们使用SQL Server 2012。

此篇将介绍如下内容:

  • 启动PowerShell
  • 通过PowerShell导航并且查看SSAS对象
  • 通过PowerShell运行些基础指令
  • 处理SSAS的一个分区

本文使用SQL Server 2012的Adventureworks示例数据库,有可以在这里下载到这个示例库:

http://msftdbprodsamples.codeplex.com/releases/view/55330

开始

  1. 在开始菜单下,点击Run选项。或者Windows键+r。

  2. 在运行窗体中输入sqlps启动SQL Server下的PowerShell。

  3. 输入GCI命令查看PowerShell下的对象列表。

    GCI命令的含义是获取所有子对象,跟DOS时代下的dir命令很像,所以这里你也可以同样可以使用LS或者DIR获取同样的结果。从结果中可以看到,SQL Server PowerShell可以让你自动以自动化的方式去处理SQL Server数据引擎的任务,策略,数据集,SQL Server集成服务任务以及SQL Server分析服务任务。此篇我们将集中SSAS任务。

  4. 使用如下命令进入到分析服务目录中。

    CD sqlas

    这里的CD命令跟DOS下的相同。

  5. 关于GCI的更过信息,可以输入如下命令获取帮助:

    get-help gci –detailed

分区操作

SSAS多维数据库下包含Cubes立方体,Cubes下又包含度量值以及度量值分区。下图展示了其层次结构。

接下来使用CD命令移动到分区目录下。

cd servername\DEFAULT\databases\AdventureWorksDW2012Multidimensional-EE\cubes\Adventure Works\MeasureGroups\Internet Orders\Partitions

  • Servername就是Windows Server的名称。
  • Default是SSAS服务实例的名称。
  • AdventureWorksDW2012Multidimensional-EE是数据库名称。
  • AdventureWork是立方体名称。
  • Internet Orders是度量值组名称。
  • 最后我们就可以获取到其下的分区信息。当一个分析服务数据库太大的时候我们会考虑将其拆分成不同的分区:

使用分区对数据进行拆分,可以通过并行的方法提高处理的速度,并且对于相关的查询性能也会有提高。

接下来通过GCI命令列出所有的分区信息.

我们可以看到分区名称,估计行数以及处理的模式。在Adventureworks立方体中分区是按照年来进行拆分的。每个分区的行数默认是没有被计算的所以看到的是0。处理模式是分区的处理方式,Regular模式意味着数据和聚合都会被处理,另外一种Lazy聚合意味着数据首先会被处理,聚合在随后的后台进程创建。这个设置对数据以及降低索引创建是非常有帮助的,因为索引的创建会有额外的性能开销。

可以通过Get-member的方法获取分区下的所有成员。

LS | Get-Member

Get-Member命令用于列出一个对象支持的属性和方法。在这里就是列出分区下所支持的属性和方法。

比如可以看到分区名,LastProcessed时间以及分区的EstimatedSize:

LS| SELECT NAME, LASTPROCESSED, ESTIMATEDSIZE

如果要处理一个指定的分区那么就可以使用下面的命令:

Invoke-ProcessPartition -Name "Internet_Orders_2006" -MeasureGroupname "Internet Orders" -CubeName "Adventure Works" -database "AdventureWorksDW2012Multidimensional-EE" -ProcessType "ProcessFull"

这个命令会处理Adventureworks下Internet Orders度量值组名为"Internet_Order_2006"的分区,并且是以全量的方式来处理。

在SQL Server 2012 SP1的这个版本,当我们运行完这个命令然后再运行"LS|SELECT NAME, LASTPROCESSED, ESTIMATEDSIZE",默认信息是没有更新的。需要把PowerShell关闭掉然后再重新打开再运行这个命令才可以看到更新后的信息。

备份SSAS数据库

运行下面的命令可以实现Adventureworks的备份:

backup-asdatabase d:\awdb-20110930.abf "AdventureWorksDW2012Multidimensional-EE" -AllowOverwrite –ApplyCompression

这个命令会备份AdventureWorksDW2012Multidimensional-EE数据库,备份文件名为awdb-20110930.abf,并且存储在d盘根目录下。这个命令同样也会覆盖已经存在的同名备份文件。

此篇演示了如何启动PowerShell,如何显示对象下的属性,如何处理一个分区以及最后如何备份一个数据库。下一篇会介绍PowerShell在SSAS下的更多操作。

译注:

SSAS的对象的层次结构比较复杂,具体该如何进行导航或者在某些对象下能做什么,需要对SSAS数据库的基本结构有一个了解。

PowerShell操作SSAS的方式也是通过AMO的方式,方便通过基于.net的方式来进行操作。

[译]SSAS下玩转PowerShell的更多相关文章

  1. [译]SSAS下玩转PowerShell(三)

    在第一篇中简单介绍了PowerShell,包含基本的一些命令,以及如何打开PowerShell,并且导航到SSAS对象.第二篇中学习了如何使用变量根据当前日期创建SSAS备份,以及如何运行MDX和XM ...

  2. [译]SSAS下玩转PowerShell(二)

    上一篇中简单的介绍了SSAS下的PowerShell,这一篇会演示更多的操作,比如根据当前时间创建备份,使用变量去指定处理哪一个分区,以及用XMLA脚本去创建分区,和在PowerShell中调用Pow ...

  3. SSAS下玩转PowerShell

     操作SSAS数据库的方法有非常多,是否有一种能够方法能够通过脚本自己主动去做这些事呢,比方处理分区,创建备份以及监视SSAS的执行状况.   原文地址: http://www.mssqltips ...

  4. Linux下玩转Dota2

    Dota2是一款颇为风靡的即时战略类游戏,去年官方就支持Mac和Linux了,对于习惯Mac和linux平台的孩子们来说,简直感动的泪流满面. 当然,也简直是linux程序猿的福音啊啊! 与Win8. ...

  5. cento7.3下玩转sphinx

    cento7.5下玩转sphinx 1 安装依赖文件 yum install postgresql-libs unixODBC 2 下载 wget http://sphinxsearch.com/fi ...

  6. Windows 下如何调试 PowerShell

    背景 最近在用 PowerShell 的时候,发现一些地方特别有意思.于是就萌生了看源代码的想法,单看肯定不过瘾,调试起来才有意思.于是就有了这个,记录下. 调试 PowerShell 主要分为两种方 ...

  7. 玩转PowerShell第一节——【后台任务处理】-技术&分享

    概述 相信大家对后台任务处理不陌生,比如.Net的后台线程处理,Java的线程处理等等. 而当我们用PowerShell这个强大的工具时怎么样开启后台任务呢,以及怎样处理这些任务呢,本篇将会告诉你Po ...

  8. linux下一键安装 powershell,的bash脚本

    说明 目前,linux下的powershell约等于pash.希望大家专注mono,关注pash. 一键安装脚本包括for centos6,centos7,ubuntu 14.04  ubuntu 1 ...

  9. 【Howie玩docker】-windows下玩docker

    Windows下安装toolbox一直没成功,于是投机取巧,用虚拟机手工打造玩docker的方法. 步骤: 安装虚拟机,安装centos 在win下建立共享文件夹,假如是 f:/share 在cent ...

随机推荐

  1. bzoj4458: GTY的OJ

    题目大意:给定一棵带点权的有根树,同时给定L,R,要求找M条链,每条链满足以下条件的情况下,要求所有链权和最大: 1.两两不相同(可以包含/相交等) 2.节点数在[L,R]间 3.其中一个端点的深度必 ...

  2. 数据结构图文解析之:栈的简介及C++模板实现

    0. 数据结构图文解析系列 数据结构系列文章 数据结构图文解析之:数组.单链表.双链表介绍及C++模板实现 数据结构图文解析之:栈的简介及C++模板实现 数据结构图文解析之:队列详解与C++模板实现 ...

  3. Leetcode 254. Factor Combinations

    Numbers can be regarded as product of its factors. For example, 8 = 2 x 2 x 2; = 2 x 4. Write a func ...

  4. System.Diagnostics.Process.Star的用法

    System.Diagnostics.Process.Start(); 能做什么呢?它主要有以下几个功能: 1.打开某个链接网址(弹窗). 2.定位打开某个文件目录. 3.打开系统特殊文件夹,如“控制 ...

  5. Asynchronous fs.stat.isDirectory()

    function showFile() { for(var i = 0; i< files.length; i++){ var itemFile = files[i]; fs.stat(__di ...

  6. 正则去掉img标签的style样式

    $body = '<div style="width:100px; height:20px;"><img alt="test" src=&qu ...

  7. Java开发面试

    有很多文章说面试相关的问题,有国内也有国外的,但是我相信不少人,特   别是新人看完后还是觉得比较虚比较泛,似乎好像懂了,但是一遇到面试还   是有些手无足措或者重复犯一些错误.本篇文章正是结合实际经 ...

  8. getCanonicalName和getSimpleName getName的区别与应用

    接口: package com.test; public interface Fruit { } 一个实现类: package com.test; public class Apple impleme ...

  9. [NHibernate]一对多关系(级联删除,级联添加)

    目录 写在前面 文档与系列文章 一对多关系 一个例子 级联删除 级联保存 总结 写在前面 在前面的文章中,我们只使用了一个Customer类进行举例,而在客户.订单.产品中它们的关系,咱们并没有涉及, ...

  10. 什么时候用@Resource,什么时候用@service

    Spring中什么时候用@Resource,什么时候用@service当你需要定义某个类为一个bean,则在这个类的类名前一行使用@Service("XXX"),就相当于讲这个类定 ...