zoukankan      html  css  js  c++  java
  • 通过Powershell检查cube中每个度量是否都有值

    [void][reflection.assembly]::LoadFile("C:\Program Files\Microsoft.NET\ADOMD.NET\100\Microsoft.AnalysisServices.AdomdClient.dll") 

    $conn = New-object Microsoft.AnalysisServices.AdomdClient.AdomdConnection;

    write-host "Server(default localhost):"
    $strServer= read-host
    write-host "Database(default DBName):"
    $strDatabase = read-host
    write-host "Cube(default CubeName, press 'a' for ALL):"
    $strCube=read-host

    if ([System.String]::IsNullOrEmpty($strServer))
    {
        $strServer="localhost\r2"
    }
    if ([System.String]::IsNullOrEmpty($strDatabase))
    {
        $strDatabase="DBName"
    }
    if ([System.String]::IsNullOrEmpty($strCube))
    {
        $strCube="CubeName"
    }

    write-host "Connect server:" $strServer ", database:" $strDatabase ",cube:" $strCube

    $conn.ConnectionString = "Provider=MSOLAP.3;Persist Security Info=True;Data Source= " + $strServer + " ;Initial Catalog= " +$strDatabase;
    $conn.Open();

    write-output "Opened."

    foreach ($cu in $conn.Cubes)
    {
        if ($cu.Type -eq [Microsoft.AnalysisServices.AdomdClient.CubeType]::Cube)
        {  
            if (($cu.Name -eq $strCube) -or ($strCube.ToUpper() -eq "A"))
            {
                write-output "---------------------------------------"
                write-output "Cube:" $cu.Name;
                write-output "---------------------------------------"
               
                $total=0
                $zero=0
               
                foreach ($m in $cu.Measures)
                {
                    $total++
                   
                    $strMDX = "SELECT " + $m.UniqueName + " ON 0 FROM [" + $cu.Name + "]"
                    #write-host $strMDX
                   
                    $comm=$conn.CreateCommand()
                    $comm.CommandText=$strMDX
                    $reader=$comm.ExecuteReader()
                    $t = $reader.Read()
                   
                    $result=0
                   
                    if ($reader[0] -eq $null)
                    {
                        $result=0
                    }
                    else
                    {
                        $result = [System.Convert]::ToDouble($reader[0])
                        $reader.Close()
                       
                        if ($result -gt 0)
                        {
                            #write-output $result
                            $zero++
                            continue
                        }
                    }
                   
                    $name=$m.Name
                    write-output "$name : $result"
                   
                    #write-output $m.Name
                    $reader.Close()
                }
               
                write-output "------------------------------------$zero/$total"
            }
        }
    }

    Keypoints:

    如何在powershell引入并且使用adomd.net对象。

    如何声明一个.net对象。

    如何使用.net枚举。

    如何使用.net下实例或者静态方法。

  • 相关阅读:
    linux系统防火墙对访问服务器的影响
    Android 样式的开发(转)
    Android开发学习总结(三)——appcompat_v7项目说明
    Android开发:碎片Fragment完全解析fragment_main.xml/activity_main.xml
    BootStrap 常用控件总结
    mybatis自定义代码生成器(Generator)——自动生成model&dao代码
    MySql的下载和安装(解压版)
    jquery mobile 表单提交 图片/文件 上传
    java读取.properties配置文件的几种方法
    AngularJS------认识AngularJS
  • 原文地址:https://www.cnblogs.com/aspnetx/p/1983382.html
Copyright © 2011-2022 走看看