如何以编程方式停止 SSAS 多维数据集处理?
How to stop SSAS cube processing programatically?
我们正在使用 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 小时)。如果有必要,我们需要一种优雅地 stop/cancel 它的方法(上面的代码是复杂 Windows 服务的一部分,有时需要重新启动)。
中断任务导致cube没有被处理是完全可以接受的。
有没有办法把上面的代码写成非阻塞的?或者以某种方式传递回调?我在 MSDN 文档中找不到任何相关内容:
https://msdn.microsoft.com/en-us/library/microsoft.analysisservices.database.aspx
您能否尝试摆脱 using
块并使您的 server
对象成为 class 级别成员。然后在取消线程上试试这个:
server.CancelSession(server.SessionID);
我们正在使用 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 小时)。如果有必要,我们需要一种优雅地 stop/cancel 它的方法(上面的代码是复杂 Windows 服务的一部分,有时需要重新启动)。
中断任务导致cube没有被处理是完全可以接受的。
有没有办法把上面的代码写成非阻塞的?或者以某种方式传递回调?我在 MSDN 文档中找不到任何相关内容:
https://msdn.microsoft.com/en-us/library/microsoft.analysisservices.database.aspx
您能否尝试摆脱 using
块并使您的 server
对象成为 class 级别成员。然后在取消线程上试试这个:
server.CancelSession(server.SessionID);