如何获取 SSAS 表格多维数据集的上次处理时间戳?
How can I get the Last Processed timestamp for an SSAS tabular cube?
在 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 的上次处理时间戳,来自“数据库属性”屏幕的时间戳,而不是来自恰好稍后处理的分区的时间戳。
有没有办法以编程方式获得它?
您可以使用从 here 下载的 Analysis Services 存储过程程序集。
获得与您的 Analysis Server 版本对应的程序集文件后,通过 SSMS 连接到您的实例。
- 寻找你的数据库(数据库立方体)
- 转到程序集文件夹
- 右键单击
New Assembly...
- 浏览并select程序集。
- 按照文档程序集所述设置权限
- 导入程序集后,使用此 MDX 查询获取最后处理的时间戳。
--
with member [Measures].[LastProcessed] as ASSP.GetCubeLastProcessedDate()
select [Measures].[LastProcessed] on 0
from [Armetales DWH]
如果这对您有帮助,请告诉我。
在查看 Analysis Services 存储过程程序集中的代码后,我能够将获得我正在寻找的日期的 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
----------------
在 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 的上次处理时间戳,来自“数据库属性”屏幕的时间戳,而不是来自恰好稍后处理的分区的时间戳。
有没有办法以编程方式获得它?
您可以使用从 here 下载的 Analysis Services 存储过程程序集。
获得与您的 Analysis Server 版本对应的程序集文件后,通过 SSMS 连接到您的实例。
- 寻找你的数据库(数据库立方体)
- 转到程序集文件夹
- 右键单击
New Assembly...
- 浏览并select程序集。
- 按照文档程序集所述设置权限
- 导入程序集后,使用此 MDX 查询获取最后处理的时间戳。
--
with member [Measures].[LastProcessed] as ASSP.GetCubeLastProcessedDate()
select [Measures].[LastProcessed] on 0
from [Armetales DWH]
如果这对您有帮助,请告诉我。
在查看 Analysis Services 存储过程程序集中的代码后,我能够将获得我正在寻找的日期的 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
----------------