如何获取 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 连接到您的实例。

  1. 寻找你的数据库(数据库立方体)
  2. 转到程序集文件夹
  3. 右键单击 New Assembly...
  4. 浏览并select程序集。
  5. 按照文档程序集所述设置权限
  6. 导入程序集后,使用此 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
----------------