2009-09-11 54 views
1

我有一個事件驅動的應用程序,最近開始在dev和test中使用SQL Express 2008(而不是Std版本)來存儲狀態機的當前狀態。遷移到SQL Express之後,我們開始看到我們向數據庫寫入的順序(使用LINQ to SQL)和SQL Express Profiler將數據報告到數據庫的順序之間的差異。SQL Express 2008不按順序提交LINQ to SQL寫入?

我們使用Log4Net記錄數據,日誌條目顯示傳入事件按正確的順序發生,我們必須已按正確的順序處理它們。我們還發現,在分析SQL Express時,數據正在寫入的故障。結果是,當後續事件進入時(在LINQ數據上下文中調用SubmitChanges()約500ms後),數據庫寫入還沒有(還沒有?)被提交,所以狀態模型認爲我們處於無效狀態,過渡正常。最終的結果是混亂。

爲什麼它的價值,我沒有看到這在SQL Server 2008標準,所以我想知道這是否是SQL Express的問題?你見過類似的問題嗎?

我假設它與profiler不存在問題,因爲我們確實有一些狀態轉換的轉換問題,所以profiler似乎與觀察結果一致。

問候,

安德魯·馬修斯

回答

0

當你說你已經處理他們在正確的順序,你的意思是在你告訴的LINQ to SQL做一些事情的順序?原因是LINQ to SQL在內部對操作進行重新排序。

你在記錄什麼? LINQ to SQL datacontext日誌屬性?

+0

嗨達米安,你是對的 - 我指的是頂級應用程序事件的順序。我不(通常)使用日誌數據上下文,因爲我已經在系統負載下記錄GB /小時。 – 2009-10-09 00:10:47

+0

你請求的序列總是被重新排序,因爲它必須先創建對象,然後才能爲它們分配引用等。我不確定這是如何導致你的問題,除非你有觸發器? – DamienG 2009-10-09 20:28:43