【发布时间】:2011-06-22 15:03:42
【问题描述】:
我有一个通过 LINQ 与 SQL Server 2008 数据库通信的 C# windows 服务。在 LINQ 中,我定义了一些存储过程。我的服务基本上每隔几分钟就会唤醒一次,并在数据库中查找要处理的内容。在处理时,对于每条新记录,它都会运行一个存储过程。处理完所有记录后,它会运行另一个存储过程。我有一个非常奇怪的问题。对于第一个存储过程(使用每条记录运行),一切正常。该过程被调用,正常运行,并且代码在调用之后继续。对于第二个过程(运行一个处理的所有记录),服务只是挂起。我没有收到错误消息,它没有崩溃,它似乎仍在运行,但在我重新启动服务之前它永远不会做任何事情。如果我在 SQL Server Management Studio 中手动运行该过程,它会正确执行并完成。我希望有人知道这里发生了什么。
在每条记录的循环内:
if (Settings.Default.SQLSpatialEnabled)
{
try
{
if ((bool) f.sdrFaultType.TripFault)
{
DataContext.sp_locateFault ((int) f.ID);
}
}
catch (Exception ex)
{
Logger.Logger.Trace ("Locate fault (" +
f.ID +
") exception: " +
ex.Message);
}
}
毕竟记录:
if (Settings.Default.SQLSpatialEnabled)
{
DataContext.sp_mapFaults ();
Logger.Logger.Trace ("Faults Mapped");
}
“故障映射”从未出现在日志中,一切都基本停止。
【问题讨论】:
-
你能显示你用来调用存储过程的代码吗?
标签: c# linq sql-server-2008 linq-to-sql windows-services