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

原文地址:

http://www.mssqltips.com/sqlservertip/2939/automate-sql-server-analysis-services-tasks-with-powershell--part-2/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=20140328

在SSAS下使用PowerShell变量

  1. 首先来看下面的代码:

    $mydate="ssas powershell"

    这里我们创建了一个名字为$mydate的变量,$前缀表名这是一个变量,然后给这个变量赋一个值"ssas powershell"。

  2. 如果需要显示变量$mydte的值只需要把变量的名字敲出来然后按ENTER。

    $mydate

  3. 接下来把当前日期赋给这个变量。

    $mydate=Get-Date

    通过Get-Date方法获取到当前日期,并且将其赋给$mydate变量。PowerShell是不需要为变量指定类型的:

  4. 默认显示的日期类型是长类型的,并且格式会遵从服务器的配置格式。通过下面的命令可以将其转换成yyyyddMM的格式:

    $mydate=Get-Date –format yyyyddMM

    MM在这里是大写主要是为了跟分钟的小写mm区分开。

  5. 验证下格式:

    $mydate

    这样我们就获取到了一个格式为yyyyddMM的保存有当前日期的变量。

  6. 接下来需要做的就是根据这个当前时间来创建备份。

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

    这样一个待用当前时间编辑的文件名备份就被创建在了d盘上。同样在上面的这个命令中,指派了数据库的名称,允许覆盖标记以及是否启用压缩。

使用PowerShell处理SSAS的一个分区

跟上一篇的不同,这里我们用一个变量名引入到命令中,来实现动态的分区处理。

  1. 首先我们来关注下SSAS的分区,查看下图,我们可以看到SSAS数据库的层级极结构:

  2. 接下来我们要处理Internet_Orders_2008这个分区。跟上一篇不同我们通过变量的方式$myyear传送2008这个值到命令中然后处理相应的分区。

    $myyear=2008

    Invoke-ProcessPartition -Name "Internet_Orders_"+$myyear -MeasureGroupname "Internet Orders" -CubeName "Adventure Works" -database "AdventureWorksDW2012Multidimensional-EE" -ProcessType "ProcessFull"

    在上面的命令中,变量"Internet_Orders_$myyear"对应的就是分区名"Internet_Orders_2008"。度量值组是"Internet Orders",CubeName是"Adventure Works"。

通过PowerShell调用XMLA脚本

  1. XMLA最主要的一个用途就是创建和处理SSAS对象。在这个示例中我们生成一个脚本来创建分区,然后在PowerShell里执行它。首先,创建一个生成分区"Internet_Orders_2008"的脚本。

  2. 然后,对这个XMLA脚本进行修改,找到标识分区名称为2008的地方,将其改成2009。

    [译注]:原文这里没有提到,就是下面的QueryDefinition对应的那段SQL代码也是需要修改的,所以实际项目中,需要根据实际情况,Name和QueryDefinition都需要修改,这里的修改跟UI界面中的都能对应的上,所以这里不做详细介绍。

  3. 将这段脚本保存下来,比如:d:\powershell2\createPartition.xmla目录,然后用PowerShell的Invoke-ASCMD命令运行这个脚本。

    Invoke-ASCmd -InputFile:"d:\powershell2\createPartition.xmla"

    Invoke-ASCMD命令用于在PowerShell中运行SSAS命令,比如XMLA脚本,应用立方体的MDX脚本以及应用数据挖掘的DMX脚本。如果此时在SSMS中刷新一下SSAS实例,可以看到新创建的分区。

在PowerShell中运行MDX查询

  1. 首先生成一段MDX查询,在SSMS中浏览Adventure Works立方体。

  2. 拖拽Internet Order Count度量值到查询面板中。

  3. 点击设计模式图标就可以看到对应的MDX脚本。

  4. 把脚本拷贝出来然后保存到文本文件中,比如d:\powershell2\" directory。
  5. 用如下命令运行这个mdx脚本。

    Invoke-ASCmd -Database "AdventureWorksDW2012Multidimensional-EE" -InputFile:"d:\powershell2\mymdx.mdx"| Out-file d:\Results\XMLAQueryOutput.xml

    这里我们所做的就是在AdventureWorksDW2012Multidimensional数据库中运行这个MDX查询,查询结果以XML的方式显示在文件XMLAQueryOutput.xml中。

  6. 查询的结果可以在XML文件中找到。

[译注]

原文介绍的都是很简单的操作,但是对于自动化任务来说还是很方便的,不如动态创建分区,动态处理分区等等,变量的引入可以加入更多的程序流程在里面,从而实现更复杂的功能。

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

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

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

  2. [译]SSAS下玩转PowerShell

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

  3. SSAS下玩转PowerShell

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

  4. windows下mongodb基础玩法系列二CURD附加一

    windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...

  5. windows下mongodb基础玩法系列二CURD操作(创建、更新、读取和删除)

    windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...

  6. 菜鸟玩云计算之二十:saltstack入门初步

    菜鸟玩云计算之二十 SaltStack 入门初步 0. saltstack 是什么 参考下面的文章: http://docs.saltstack.com/en/latest/topics/tutori ...

  7. Windows 下如何调试 PowerShell

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

  8. Linux下玩转Dota2

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

  9. Android平台下利用zxing实现二维码开发

    Android平台下利用zxing实现二维码开发 现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研究了下二维码开发的东西,开源的二维码扫描库主要有zxing和zbar,zbar在iPos平 ...

随机推荐

  1. jeecg表单页面控件权限设置(请先看官方教程,如果能看懂就不用看这里了)

    只是把看了官方教程后,觉得不清楚地方补充说明一下: 1. 2. 3. 4.用"jeecgDemoController.do?addorupdate"这个路径测试,不出意外现在应该可 ...

  2. 【转】单调队列优化DP

    转自 : http://www.cnblogs.com/ka200812/archive/2012/07/11/2585950.html 单调队列是一种严格单调的队列,可以单调递增,也可以单调递减.队 ...

  3. 深入浅出RxJava

    深入浅出RxJava(一:基础篇) 深入浅出RxJava(二:操作符) 深入浅出RxJava三--响应式的好处 深入浅出RxJava四-在Android中使用响应式编程 RxJava 到底是什么? 一 ...

  4. win7使用iis并搭建 图片服务器

    1.打开控制面板 2.程序-卸载程序 3.点击左边的 打开或关闭windows功能 4.如下图所示,找到internet信息服务勾选.顺便把FTP服务器也全部勾选了,后面会用到 5.进入 控制面板 – ...

  5. 5、Servlet的使用

    一.什么是Servlet:用于开发动态Web资源的的技术.使用Servlet可以读取来自用户端的数据,而实现了用户与服务器之间的动态数据交互.更简单的说就是连接页面和代码. 1.开发一个动态的Web资 ...

  6. tyvj1202 数数食物链

    描述 TsyD学习了生物的生态环境那一张后,老师留了一项作业,就是给一张食物网,求所有食物链的总数.(从最低营养级生物(它不能吃任何其他的生物)开始到最高营养级(它不能被任何其他生物吃) 叫做一条食物 ...

  7. CSS高效开发实战:CSS 3、LESS、SASS、Bootstrap、Foundation --读书笔记(4)构造尺寸更灵活的背景

    相比传统的图片背景来说,使用CSS构造背景色不仅可以降低网络传输的开销,更由于其尺寸的可控性受到开发者的青睐. 如设计师设计了一张背景图片作为标题背景,如图5.18所示.对于用电脑浏览网页的用户来说, ...

  8. Linux Socket编程

    “一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. ——有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览 ...

  9. c++ 类静态成员、非静态成员初始化

    1.静态成员初始化(不能在构造函数或初始化列表中初始化) 1.1 所有静态成员都可以在类定义之外初始化(通用),如下所示 class test { public: static int a; }; ; ...

  10. maven项目打包成可执行的jar

    编写功能类: package com.hpay.FileToZkUtil; import java.io.File; import java.io.FileInputStream; import ja ...