我们正在使用Microsoft.AnalysisServices库来访问我们的SSAS数据库(在SQL Server 2014上)并以编程方式处理多维数据集。
代码如下所示:
using (var server = new Server())
{
server.Connect("someserver");
if (server.Connected)
{
var db = server.Databases.FindByName("somedb");
if (db != null)
{
db.Process(ProcessType.ProcessFull);
}
}
}
问题是,完整立方体处理可能需要很长时间(在我们的情况下超过1小时)。如果需要,我们需要一种方法来优雅地停止/取消它(上面的代码是有时需要重新启动的复杂Windows服务的一部分)。
完全可以接受的是,中断任务会导致多维数据集无法处理。
有没有办法编写上面的代码,所以它是非阻塞的?或以某种方式通过回调?我在MSDN文档中找不到任何相关内容:
https://msdn.microsoft.com/en-us/library/microsoft.analysisservices.database.aspx
答案 0 :(得分:0)
您是否可以尝试删除using
块并使server
对象成为类级成员。然后在取消线程上试试这个:
server.CancelSession(server.SessionID);