'登錄失敗'錯誤從來沒有重新出現過,好奇嗎?但其他連接錯誤似乎是通過關閉服務器來解釋的。錯誤發生的隨機性仍然是一個謎。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