使用Powershell获取SSAS多维数据集的最后一个处理日期

时间:2017-05-22 09:13:52

标签: powershell ssas analysis

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

1 个答案:

答案 0 :(得分: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更有趣,因为它不比其他方法更快或更方便(并且需要下载)。我提到它是完整的。