【发布时间】:2012-08-07 14:43:03
【问题描述】:
当多个用户可以同时处理同一个多维数据集并导致多维数据集处理失败时会出现问题。所以我需要检查当前是否正在处理某个多维数据集。
【问题讨论】:
标签: sql-server-2008-r2 ssas olap
当多个用户可以同时处理同一个多维数据集并导致多维数据集处理失败时会出现问题。所以我需要检查当前是否正在处理某个多维数据集。
【问题讨论】:
标签: sql-server-2008-r2 ssas olap
使用此代码选择正在运行的进程:(在 OLAP 中执行)
select *
from $system.discover_Sessions
where session_Status = 1
这个代码取消运行prosesess!请将 PID 更改为运行 SESSISONS_SPID 例如:
<Cancel xmlns ="http://schemas.microsoft.com/analysisservices/2003/engine">
<SPID>92436</SPID>
<CancelAssociated>1</CancelAssociated>
</Cancel<
【讨论】:
对于已经列出的方法,可能更好的方法是使用 SQL Server Profiler 来观察分析服务器上的活动。如前所述,当前流行的答案有两个缺陷,第一个选项仅显示最后一次处理多维数据集。第二个选项仅显示是否正在运行。但它不会告诉您正在运行什么以及如果您的多维数据集不是从 SQL 服务器而是从不同的数据源处理的怎么办?
使用 SQL Server Profiler 不仅可以告诉您是否正在处理某些内容,还可以告诉您正在处理的内容的详细信息。您可以过滤掉的大多数事件。如果您想要实时信息,请观看进度报告当前事件...通常需要大量数据才能从中获取真实信息,但您会很清楚,至少过程正在进行中。观看 Progress Report Begin and End 事件只是为了获得更好的信息,例如当前正在处理的内容,甚至可以深入到分区级别。其他具有良好信息的事件包括 Command Begin/End 和 Query Begin/End。
【讨论】:
如果正在处理多维数据集,您将在任务管理器中看到一个名为“MSDARCH”的作业正在运行。不知道你怎么知道是哪一个。
【讨论】:
如果其他人已经在处理一个多维数据集,我认为你不能阻止它被处理。您可以对“帮助”执行的操作是运行 MDX 查询以检查上次处理多维数据集的时间:
SELECT CUBE_NAME, LAST_DATA_UPDATE FROM $System.MDSCHEMA_CUBES
或者检查realted 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
【讨论】: