zoukankan      html  css  js  c++  java
  • powershell4ssas笔记

    连接SSAS方法1,通过ADOMD.NET

    #import dll

    add-type -path "Microsoft.AnalysisServices.AdomdClient.dll"

     

    #create connection

    $c=new-object Microsoft.AnalysisServices.AdomdClient.AdomdConnection

    $c.ConnectionString="Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=Adventure Works DW 2008;Data Source=localhost"

    $c.Open()

    foreach ($cube in $c.Cubes)

    {

    if ($cube.Type -eq [CubeType]::Cube)

    write-host $cubes

    }

    关键点:

    Add-Type:相当于在c#中添加一个dll进来。

    New-Object:声明一个.net对象

    -eq相当于c#==

     

     

    连接SSAS方法2,通过AMO连接,并且备份cube

    $s=[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices")

    $server=New-Object Microsoft.AnalysisServices.Server

    $server.connect("Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=Adventure Works DW 2008;Data Source=.")

    $db=$server.databases.item("Adventure Works DW 2008")

    $db.backup("d:\mmm.abf")

    第一行,声明一个.net对象的另一种方法。

    备份直接在Database对象上操作就可以。

     

     

    Process cube

    [System.reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices")

    [Microsoft.AnalysisServices.Server]$svr = new-Object Microsoft.AnalysisServices.Server

    $svr.Connect("Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=Adventure Works DW 2008;Data Source=localhost")

    #define error configuration

    $svr.CaptureXml=$true

    [Microsoft.AnalysisServices.Database] $_db=$svr.Databases.FindByName("Adventure Works DW 2008")

    $_db.Cubes.FindByName("Adventure Works").Process()

    $_db.Process()

    $svr.CaptureXml=$false

    #write out XMLA

    foreach ($v in $svr.CaptureLog)

    {

        write-output $v

    }

    #begin to process

    [Microsoft.AnalysisServices.XmlaResultCollection] $_result = $svr.ExecuteCaptureLog($true,$true)

    write-output "Process Waring and errors:"

    foreach ($r in $_result)

    {

        foreach ($m in $r.Messages)

        {

            write-output "$m.Description"

        }

    }

    关键点:

    每一个ssas object都有一个process方法,而且都需要套在$svr.CaptureXml=$true$svr.CaptureXml=$false中间,process方法后的object会生成相应的xmla对象用来处理cube

    Xmla是放在Server对象中的,CaptureLog是一个行集需要枚举读取出来Capturexmla是什么样的。

    ServerExecuteCaptureLog方法真正处理生成的xmla,结果是一个XmlaResultCollection对象。里面有cube的处理记录,跟手动在项目里处理cube的差不多,不过是同步的,没有找到异步方法。

     

     

  • 相关阅读:
    Docker容器监控(十)--技术流ken
    Docker跨主机通信(九)--技术流ken
    Docker多主机管理(八)--技术流ken
    Docker公共&本地镜像仓库(七)--技术流ken
    Docker镜像构建的两种方式(六)--技术流ken
    Docker网络(五)--技术流ken
    tomcat使用详解(week4_day2)--技术流ken
    haproxy使用演示--技术流ken
    xshell连接虚拟机详解--技术流ken
    grafana使用详解--技术流ken
  • 原文地址:https://www.cnblogs.com/aspnetx/p/1749739.html
Copyright © 2011-2022 走看看