【发布时间】:2017-10-21 21:14:00
【问题描述】:
我在 X 服务器上托管了一个 SSAS 多维数据集,并且上面有 Y 多维数据集。 如何使用 Powershell 了解 Cube.VIZ 的一些状态 状态:-在线,最后处理日期
【问题讨论】:
标签: powershell ssas analysis
我在 X 服务器上托管了一个 SSAS 多维数据集,并且上面有 Y 多维数据集。 如何使用 Powershell 了解 Cube.VIZ 的一些状态 状态:-在线,最后处理日期
【问题讨论】:
标签: powershell ssas analysis
至少有四种方法可以做到这一点:
安装SqlServer 模块并使用提供者:
# Install-Module SqlServer
dir sqlserver:\sqlas\$ServerName\default\Databases\*\Cubes\* | Select Select Name, LastProcessed
我不喜欢这个选项,因为它需要一个有效的 WMI 连接。这通常在生产服务器上设置防火墙。但如果它有效,它就不能为了方便而被击败。
使用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 完成。这会产生 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
这介于 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 更有趣,因为它并不比其他方法更快或更方便(并且需要下载)。为了完整起见,我提到它。
【讨论】:
SELECT {} ON 0 FROM [Cube])。如果成功,则该多维数据集至少是可访问的,并且如果它也被处理过,它应该是可用的。