如何确定现在正在处理哪个SSAS多维数据集?

问题描述 投票:8回答:5

当多个用户可以同时处理同一个多维数据集时,结果是多维数据集处理失败。因此,我需要检查当前是否正在处理某些多维数据集。

sql-server-2008-r2 ssas olap
5个回答
8
投票

我认为如果其他人已经在处理多维数据集,则可以防止它被处理。您可以对“帮助”执行的操作是运行MDX查询以检查上次处理多维数据集的时间:

SELECT CUBE_NAME, LAST_DATA_UPDATE FROM $System.MDSCHEMA_CUBES

或检查已设置的SQL Server实例上的sys.process表以查看其是否正在运行:

select spid, ecid, blocked, cmd, loginame, db_name(dbid) Db, nt_username, net_library, hostname, physical_io, 
       login_time, last_batch, cpu, status, open_tran, program_name
from master.dbo.sysprocesses
where spid > 50
  and loginame <> 'sa'
  and program_name like '%Analysis%'
order by physical_io desc
go

2
投票

使用此代码选择正在运行的进程:(在OLAP中执行)

    select *

from $system.discover_Sessions

where session_Status = 1

并且此代码取消了运行状态!请将PID更改为正在运行的SESSISONS_SPID例如:

<Cancel xmlns ="http://schemas.microsoft.com/analysisservices/2003/engine">

  <SPID>92436</SPID>

  <CancelAssociated>1</CancelAssociated>

</Cancel<

0
投票

可能已经列出的方法更好的方法是使用SQL Server Profiler来监视Analysis Server上的活动。如前所述,当前流行的答案有两个缺陷,第一个选项仅显示处理多维数据集的最后时间。第二个选项仅显示是否正在运行。但这并不能告诉您正在运行什么,以及如果您的多维数据集不是从SQL Server而是从另一个数据源处理的,该怎么办?

使用SQL Server Profiler不仅会告诉您正在处理的内容,还会告诉您正在处理的内容的详细信息。您可以过滤掉的大多数事件。如果需要实时信息,请观看Progress Report Current事件...通常,大量的数据无法从中获取实时信息,但是您将至少知道一个过程正在进行中上。仅观看Progress Report Begin and End]事件,以获取更好的信息,例如当前正在处理的信息,甚至包括分区级别。其他具有良好信息的事件包括Command Begin / EndQuery Begin / End


0
投票

该查询在SSMS(SQL Server Management Studio)中运行良好,是否可以使用jdbc驱动程序执行?我试图使用olap4j或mssql驱动程序,它总是抛出异常


-1
投票

如果正在处理多维数据集,您将在任务管理器中看到一个名为“ MSDARCH”的作业。不确定如何分辨哪一个。

© www.soinside.com 2019 - 2024. All rights reserved.