Как упоминал Джероен, правильный способ сделать это - позволить SSAS обрабатывать распараллеливание, чтобы вы не столкнулись с тупиками или другими проблемами, возникающими при обработке разделов в неправильном порядке.
Вы можете использовать свойство CaptureLog
для реализации этого в AMO. Журнал записи собирает операторы, которые вы хотите выполнить, а затем ExecuteCaptureLog
, чтобы запустить их все. Второй параметр в ExecuteCaptureLog
указывает, будут ли процессы выполняться параллельно.
static public XmlaResultCollection RunWithCaptureLog(Server server, string dbName)
{
if ((svr != null) && (svr.Connected))
{
svr.CaptureXml = true;
#region Actions to be captured to an XMLA file
foreach (Table table in server.Databases.GetByName(dbName).Model.Tables)
{
foreach (Partition partition in table.Partitions){
partition.RequestRefresh(Microsoft.AnalysisServices.Tabular.RefreshType.Full);
}
}
#endregion
svr.CaptureXml = false;
//public Microsoft.AnalysisServices.XmlaResultCollection ExecuteCaptureLog (bool transactional, bool parallel, bool processAffected)
return svr.ExecuteCaptureLog(true, true, true);
}
}