在SSMS中,我已经连接到一个SSAS表格立方体。当我查看属性屏幕时,我会看到11/24/2015 2:59:20 PM的最后处理时间戳。
如果我使用SELECT LAST_DATA_UPDATE FROM $system.MDSchema_Cubes,我会看到11/25/2015 12:13:28 PM的时间戳(如果对时区进行调整)。
如果我打开多维数据集中的一个表的分区屏幕,我会看到最后处理的时间戳是11/25/2015 12:13:28 PM,它与DMV中的值匹配。
我需要BISM的最后处理时间戳,而不是数据库属性屏幕上的时间戳,而不是来自稍后处理的分区的时间戳。
有办法以编程的方式实现吗?
发布于 2015-12-03 23:15:00
在查看Analysis存储过程程序集中的代码之后,我能够将一个powershell脚本组合在一起,得到我所寻找的日期。以下是代码:
#we want to always stop the script if any error occurs
$ErrorActionPreference = "Stop"
$error.Clear()
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices") | Out-Null
$databases = @('BISM1', 'BISM2')
$servers = @('Server1\BISM', 'Server2\BISM')
function Get-BISMLastProcessed
{
param(
[string] $connStr
)
Begin {
$server = New-Object Microsoft.AnalysisServices.Server
$server.Connect($connStr)
}
Process {
Try {
$database = $server.Databases.GetByName($_)
Write-Host " Database [$($database.Name)] was last processed $($database.LastProcessed)"
}
Catch [System.Exception] {
Write-Host $Error[0].Exception
}
Finally {
if ($database -ne $null) {
$database.Dispose()
}
}
}
End {
$server.Dispose()
}
}
foreach ($server in $servers) {
$connectStr = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=BISM1;Data Source=$server"
Write-Host "Server [$server]"
$databases | Get-BISMLastProcessed $connectStr
Write-Host "----------------"
}研究结果如下:
Server [Server1\BISM]
Database [BISM1] was last processed 11/30/2015 12:25:48
Database [BISM2] was last processed 12/01/2015 15:53:56
----------------
Server [Server2\BISM]
Database [BISM1] was last processed 11/30/2015 12:19:32
Database [BISM2] was last processed 11/02/2015 23:46:34
----------------发布于 2015-11-26 14:45:32
可以使用可以从这里下载的Analysis存储过程程序集。
获得对应于Analysis版本的程序集文件后,通过SSMS连接到实例。
New Assembly...--
with member [Measures].[LastProcessed] as ASSP.GetCubeLastProcessedDate()
select [Measures].[LastProcessed] on 0
from [Armetales DWH]如果这能帮到你就告诉我。
https://stackoverflow.com/questions/33925805
复制相似问题