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



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

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

PowerShell 提供商

安装SqlServer模块并使用提供程序:

# Install-Module SqlServer
dir sqlserver:sqlas$ServerNamedefaultDatabases*Cubes* | Select Select Name, LastProcessed

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

使用 SQL Server 管理对象:

[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 那么容易,但在某些情况下可能会更快。但是,该模型并不直观。

# 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 之间的中间位置。您可能需要单独下载 (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更有趣,因为它并不比其他方法更快或更方便(并且需要下载)。我提到它是为了完整。

相关内容

  • 没有找到相关文章

最新更新