2009-09-30 85 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