2009-09-30 89 views
3

我有一個.net 3.5網站,它使用Microsoft.Practices.EnterpriseLibrary調用數千個不同的存儲過程。爲Microsoft.Practices.EnterpriseLibrary設置默認隔離級別

我們已經獲得了很多超時時間,並且在一些播放和測試後,在表的末尾使用(nolock)連接存儲過程可以很好地工作並減少超時。

我想現在就對所有的sps做這個。我可以添加(nolock)到所有表名,但是更好的辦法是使用SQL設置隔離級別「SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED」

我不想把這個添加到所有sp的開始處(as有這麼多),所以正在尋找一種方式將其添加到連接。

的代碼示例調用SP是如下

public static int ExecuteNonQuery(string sStoredProcedureName, params object[] parameterValues) 
{ 
    Data.Database db = Data.DatabaseFactory.CreateDatabase(); 
    using (DbCommand command = db.GetStoredProcCommand(sStoredProcedureName, parameterValues)) 
    { 
     return db.ExecuteNonQuery(command); 
    } 
} 

我想這個設置是在web.config一個配置設置,但無法弄清楚它是什麼,或者如果我在正確的軌道上。

任何幫助真的很感激。

Cheers Amjid

+0

任何樣品完整的代碼? – Kiquenet 2010-07-20 19:49:00

回答

1

我假設您使用的是SQL Server?

嘗試設置在數據庫上的READ COMMITTED SNAPSHOT

在這裏看到更多的信息:與解決方案

http://www.codinghorror.com/blog/archives/001166.html

+0

抱歉,遲到的回覆。這工作完美。它可以在你的主板上工作,除了刪除已經放入的(noLock)之外,根本不需要任何代碼更改。 歡呼聲 – 2009-10-01 04:12:36

+0

hmmmm yes ... yes yes當然,確實如此 – Scozzard 2010-01-26 21:52:58