WF数据跟踪SqlTrackingService的问题
2010-01-03 18:05
429 查看
在练习WF的Hands-on Labs\Lab03部分的时候,遇到了一个如下的问题:
代码比较简单:
Code Snippet
static string connectionString = "Initial Catalog=TrackingStore; " +
"Data Source=.; " +
"Integrated Security=SSPI;";
static void Main(string[] args)
{
using(WorkflowRuntime workflowRuntime = new WorkflowRuntime())
{
workflowRuntime.AddService(new SqlTrackingService(connectionString));
AutoResetEvent waitHandle = new AutoResetEvent(false);
workflowRuntime.WorkflowCompleted += delegate(object sender,
WorkflowCompletedEventArgs e) { waitHandle.Set(); };
workflowRuntime.WorkflowTerminated += delegate(object sender,
WorkflowTerminatedEventArgs e)
{
Console.WriteLine(e.Exception.Message);
waitHandle.Set();
};
WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof
(DefaultSQLServices.Workflow1));
instance.Start();
instance.Suspend("Reason we are suspending the workflow.");
instance.Resume();
waitHandle.WaitOne();
GetInstanceTrackingEvents(instance.InstanceId);
Console.WriteLine("Workflow Completed - press ENTER to continue");
Console.Read();
}
}
GetInstanceTrackingEvents()方法代码如下:
Code Snippet
static void GetInstanceTrackingEvents(Guid instanceId)
{
Console.WriteLine("\r\nInstance Tracking Events :");
SqlTrackingQuery sqlTrackingQuery = new SqlTrackingQuery(connectionString);
SqlTrackingWorkflowInstance sqlTrackingWorkflowInstance;
sqlTrackingQuery.TryGetWorkflow(instanceId, out sqlTrackingWorkflowInstance);
try
{
foreach (WorkflowTrackingRecord workflowTrackingRecord in sqlTrackingWorkflowInstance.WorkflowEvents)
{
Console.WriteLine("EventDescription : {0} DateTime : {1}", workflowTrackingRecord.TrackingWorkflowEvent, workflowTrackingRecord.EventDateTime);
}
}
catch (Exception)
{
Console.WriteLine("No Instance Tracking Events Found");
}
}
工作流Workflow1的只有一个Code活动,输出一段代码。
我遇到的问题是:在程序执行的时候到waitHandle.WaitOne()这一步,系统线程会停止,然后CPU始终保持在一个90%以上。尝试了很多方案,包括重启,换机器都存在问题,Google了好久也没有满意的答复。只是有一个和我遇到的类似问题的人:http://social.msdn.microsoft.com/Forums/en-US/windowsworkflowfoundation/thread/67ea8ad6-c700-4096-a9c4-164d2e7cf7cb/这里虽然没有给出确切的答复,但是给我提供一个思路:可能就是Hand-On自带的创建数据库的一些sql语句的问题。
解决:
workflow安装的位置C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL有两个文件夹ZH-CHS和EN,我本身是中文操作系统,就把ZH-CHS里面的四个sql命令文件拷贝出来,覆盖掉里面自带的SQL文件(呵呵,覆盖的时候发现文件大小不一样)。然后重新执行Hands-on Labs\Lab03里面的cmd命令,OK,问题解决。
总结:我们在工作过程中,经常会用到别人的现成的东西,甚至老外的。那么如果过程中出现问题,不妨考虑一下是不是语言版本的问题。
代码比较简单:
Code Snippet
static string connectionString = "Initial Catalog=TrackingStore; " +
"Data Source=.; " +
"Integrated Security=SSPI;";
static void Main(string[] args)
{
using(WorkflowRuntime workflowRuntime = new WorkflowRuntime())
{
workflowRuntime.AddService(new SqlTrackingService(connectionString));
AutoResetEvent waitHandle = new AutoResetEvent(false);
workflowRuntime.WorkflowCompleted += delegate(object sender,
WorkflowCompletedEventArgs e) { waitHandle.Set(); };
workflowRuntime.WorkflowTerminated += delegate(object sender,
WorkflowTerminatedEventArgs e)
{
Console.WriteLine(e.Exception.Message);
waitHandle.Set();
};
WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof
(DefaultSQLServices.Workflow1));
instance.Start();
instance.Suspend("Reason we are suspending the workflow.");
instance.Resume();
waitHandle.WaitOne();
GetInstanceTrackingEvents(instance.InstanceId);
Console.WriteLine("Workflow Completed - press ENTER to continue");
Console.Read();
}
}
GetInstanceTrackingEvents()方法代码如下:
Code Snippet
static void GetInstanceTrackingEvents(Guid instanceId)
{
Console.WriteLine("\r\nInstance Tracking Events :");
SqlTrackingQuery sqlTrackingQuery = new SqlTrackingQuery(connectionString);
SqlTrackingWorkflowInstance sqlTrackingWorkflowInstance;
sqlTrackingQuery.TryGetWorkflow(instanceId, out sqlTrackingWorkflowInstance);
try
{
foreach (WorkflowTrackingRecord workflowTrackingRecord in sqlTrackingWorkflowInstance.WorkflowEvents)
{
Console.WriteLine("EventDescription : {0} DateTime : {1}", workflowTrackingRecord.TrackingWorkflowEvent, workflowTrackingRecord.EventDateTime);
}
}
catch (Exception)
{
Console.WriteLine("No Instance Tracking Events Found");
}
}
工作流Workflow1的只有一个Code活动,输出一段代码。
我遇到的问题是:在程序执行的时候到waitHandle.WaitOne()这一步,系统线程会停止,然后CPU始终保持在一个90%以上。尝试了很多方案,包括重启,换机器都存在问题,Google了好久也没有满意的答复。只是有一个和我遇到的类似问题的人:http://social.msdn.microsoft.com/Forums/en-US/windowsworkflowfoundation/thread/67ea8ad6-c700-4096-a9c4-164d2e7cf7cb/这里虽然没有给出确切的答复,但是给我提供一个思路:可能就是Hand-On自带的创建数据库的一些sql语句的问题。
解决:
workflow安装的位置C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL有两个文件夹ZH-CHS和EN,我本身是中文操作系统,就把ZH-CHS里面的四个sql命令文件拷贝出来,覆盖掉里面自带的SQL文件(呵呵,覆盖的时候发现文件大小不一样)。然后重新执行Hands-on Labs\Lab03里面的cmd命令,OK,问题解决。
总结:我们在工作过程中,经常会用到别人的现成的东西,甚至老外的。那么如果过程中出现问题,不妨考虑一下是不是语言版本的问题。
相关文章推荐
- WF中的跟踪服务(5):SqlTrackingService 的数据维护
- WF中的跟踪服务(3):使用SqlTrackingService跟踪规则
- WF中的跟踪服务(3):使用SqlTrackingService跟踪规则
- WF中的跟踪服务(2):使用SqlTrackingService
- WF中的跟踪服务(2):使用SqlTrackingService
- Windows Workflow Foundation:向跟踪服务(TrackingService)传递数据
- 在SQL Server2008中使用(数据)更新跟踪功能-Using Change Tracking in SQL Server 2008
- [K/3Cloud]DBServiceHelper.ExecuteDataSet(this.Context, sql)) 返回数据问题
- [K/3Cloud]DBServiceHelper.ExecuteDataSet(this.Context, sql)) 返回数据问题
- 练习WF SqlTrackingService时的一点注意事项 及一点感言
- 解决普通用户无法执行SQL_TRACE跟踪其他会话问题
- ArcSDE 10 for Microsoft SQL Server 2008安装以及导入数据遇到的问题总结
- MySQL登陆方式、数据类型、数据引擎及SQL查询语句,注意的问题.
- 用SQL语句来建立跟踪的问题
- 使用SQLServer同义词和SQL邮件,解决发布订阅中订阅库丢失数据的问题
- 微软Sql server analysis service数据挖掘技术
- WCF RIA Service实体嵌套问题(更正一下前面的动态数据集模拟)
- 微软Sql server analysis service数据挖掘技术
- 【Transact-SQL】SQL Server自动把left join自动转化为inner join、以及关联时的数据重复问题