【问题标题】:Getting the last Process Date of SSAS Cube using Powershell使用 Powershell 获取 SSAS Cube 的最后处理日期
【发布时间】:2017-10-21 21:14:00
【问题描述】:

我在 X 服务器上托管了一个 SSAS 多维数据集,并且上面有 Y 多维数据集。 如何使用 Powershell 了解 Cube.VIZ 的一些状态 状态:-在线,最后处理日期

【问题讨论】:

    标签: powershell ssas analysis


    【解决方案1】:

    至少有四种方法可以做到这一点:

    PowerShell 提供程序

    安装SqlServer 模块并使用提供者:

    # Install-Module SqlServer
    
    dir sqlserver:\sqlas\$ServerName\default\Databases\*\Cubes\* | Select Select Name, LastProcessed
    

    我不喜欢这个选项,因为它需要一个有效的 WMI 连接。这通常在生产服务器上设置防火墙。但如果它有效,它就不能为了方便而被击败。

    SMO

    使用SQL Server Management Objects:

    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices") | Out-Null
    
    $server = New-Object Microsoft.AnalysisServices.Server
    $server.Connect($ServerName)
    $server.Databases.Cubes | Select Name, LastProcessed
    $server.Dispose()
    

    SMO 在工作时很方便,但根据您的操作可能会有点慢。

    XMLA

    元数据发现也可以使用 XMLA 完成。这会产生 XML 而不是方便的对象模型,因此它不像 SMO 那样简单,但在某些情况下它可能会更快。但是,model 并不直观。

    # Install-Module SqlServer
    
    $query = @'
    <Statement>SELECT cube_name, last_schema_update FROM $system.mdschema_cubes WHERE cube_source = 1</Statement>
    '@
    $result = [xml] (Invoke-ASCmd -Server $server -Query $query)
    $result.return.root.row | select cube_name, last_schema_update
    

    ADOMD

    这介于 SMO 和直接发布 XMLA 之间。您可能需要separate download (SQL_AS_ADOMD.msi)。

    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices.AdomdClient") | Out-Null
    $connection = New-Object Microsoft.AnalysisServices.AdomdClient.AdomdConnection "Data Source=$server;Catalog=$database" 
    $connection.Open()
    $connection.Cubes.Where{ $_.Type -eq 'Cube' } | Select Name, LastProcessed
    

    这对于纯 .NET 应用程序比对于 PowerShell 更有趣,因为它并不比其他方法更快或更方便(并且需要下载)。为了完整起见,我提到它。

    【讨论】:

    • 谢谢你的工作,另外,先生你知道检查多维数据集状态的方法吗,我的意思是它是否启动,(检查服务状态在这里没有帮助)
    • “向上”是什么意思?在这里要做的最可靠的事情可能是连接并触发一个虚拟 MDX 查询 (SELECT {} ON 0 FROM [Cube])。如果成功,则该多维数据集至少是可访问的,并且如果它也被处理过,它应该是可用的。
    • 完美,谢谢:)
    • 我正在寻找一个虚拟 mdx 查询,这个 (SELECT {} ON 0 FROM [Cube]) 这是失败的
    • 是的,这是未经测试的,只是从我的头顶。随意打开一个专门用于测试多维数据集可用性的新问题。
    猜你喜欢
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多