C#的进程分析服务数据库正在冻结

时间:2011-11-04 02:20:58

标签: c# sql-server ssas business-intelligence cubes

我正在使用Microsoft.AnalysisServices.Server类连接到SSAS实例。

我按名称检索数据库,并使用ProcessType.ProcessFull作为选项调用Process方法。

server.Databases.FindByName("MyDatabase").Process(ProcessType.ProcessFull)

程序挂起一个小时,之后数据库将不会被处理。

我还尝试传递XMLA命令以使用Server类处理数据库。此命令在Sql Server Management Studio中运行时有效,但在通过服务器连接传入时不会运行。

server.Execute("My XMLA Process Command")

在尝试处理数据库之前,我使用server.Execute传递XMLA命令来创建数据库。 create database命令工作正常,但process database命令无法使用XMLA或C#对象。它只是将程序冻结了一个小时,并且不处理数据库。

非常感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

完整处理可能需要一段时间,具体取决于您的数据大小。

如果您正在创建一个gui应用程序并且它没有响应,那可能是因为您在主线程上执行了一个非常长时间运行的任务。尝试使用BackgroundWorker或ThreadPool.QueueUserWorkitem之类的东西在后台运行它。

要查看正在发生的事情,您可以通过订阅进度事件并在主线程中更新UI来获得进展。

这是一个描述订阅这些进度跟踪事件的线程:

http://social.msdn.microsoft.com/forums/en-US/sqlanalysisservices/thread/e9f87b28-a8c2-40fc-b6e6-68dfa59b07a6