'登录失败'错误从来没有重新出现过,好奇吗?但其他连接错误似乎是通过关闭服务器来解释的。错误发生的随机性仍然是一个谜。Parallel.Foreach循环创建多个数据库连接会引发连接错误?
登录失败。登录是来自不受信任的域,不能用于Windows身份验证
我想让我的代码并行运行,因此我将foreach循环更改为并行foreach循环。这似乎很简单。每个循环连接到数据库,查找一些东西,执行一些逻辑,添加一些东西,关闭连接。但是我得到上面的错误?
我使用我的本地sql服务器和实体框架(每个循环使用它自己的上下文)。使用相同的本地登录连接多次会出现问题吗?我怎么解决这个问题?我有(在尝试转换到parallel.foreach循环之前)将我的foreach对象列表拆分为四个组(独立的csv文件)并运行我的程序的四个并发实例(运行速度更快不仅仅是一个,因此也是并行的想法)。所以它似乎连接到数据库不应该是一个问题?
任何想法?
编辑: 这里的
var gtgGenerator = new CustomGtgGenerator();
var connectionString = ConfigurationManager.ConnectionStrings["BioEntities"].ConnectionString;
var allAccessionsFromObs = _GetAccessionListFromDataFiles(collectionId);
ForEach(cloneIdAndAccessions in allAccessionsFromObs)
DoWork(gtgGenerator, taxonId, organismId, cloneIdAndAccessions, connectionString));
后
var gtgGenerator = new CustomGtgGenerator();
var connectionString = ConfigurationManager.ConnectionStrings["BioEntities"].ConnectionString;
var allAccessionsFromObs = _GetAccessionListFromDataFiles(collectionId);
Parallel.ForEach(allAccessionsFromObs, cloneIdAndAccessions => DoWork(gtgGenerator, taxonId, organismId, cloneIdAndAccessions, connectionString));
的DoWork的内部之前我用的是生物实体
using (var bioEntities = new BioEntities(connectionString)) {...}
它变得奇妙而又奇妙...
我添加了一些代码在我的DoWork方法:
Debug.WriteLine(“Executing “ + itemName + ” as “ + WindowsIdentity.GetCurrent().Name);
,它神秘地开始工作(非常好/快实际上)。但最终我得到了同样的例外(约一小时后)。但我能够跟踪这.. ..?
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
EDIT2: 嗯..我在他的工作,今天上午发射它(迷恋理解为什么它会一点点工作),它是沿着工作正常(和快速巡航! ) 至今。偶尔:线程''(0x27c8)已退出,代码为0(0x0)。 线程''(0x26b8)已退出,代码为0(0x0)。
但除此之外它还没有搞砸了吗?坦率地说,这只会让我更担心。这是一次性的事情,所以我可以使用它(如果它有效),但是发生了什么?它可能是NLOG,登录多线程堵塞了东西,并在SQL中导致超时?我真的不明白。一旦它再次停止工作,我会尽力弄清楚。有没有办法来重置SQL服务器,我不知道为什么它会工作一个小时,然后搞砸了,然后从未工作超过几秒钟,现在(重新启动后)工作(约30分钟至今)?
相关问题http://stackoverflow.com/questions/10007535/tpl-task-in-wcf-service-fails-to-use-correct-iis-security-credentials-sql-conne和http:// robseder .wordpress.com/2012/04/07/asp-net-impersonation-and-parallel-foreach-issue /和http://social.msdn.microsoft.com/Forums/pl-PL/parallelextensions/thread/a1da0143- 919c-433d-9d50-83795879082d – user7116 2012-07-07 21:11:30
链接中的任何建议都没有任何影响。 – 2012-07-07 21:14:41
好吧!这很奇怪吗?我尝试了所有这些不同的建议,但没有成功。然后我决定从robseder.wordpress.com链接中尝试下面的代码:Debug.WriteLine(“Executing”+ cloneIdAndAccessions.Item1.ToString()+“as”+ WindowsIdentity.GetCurrent()。Name)我想查看用户名看起来像。你难道不知道吗?它现在正常工作?我甚至没有身份传递等,我只是添加了代码。奇怪的!? – 2012-07-08 04:20:29