3

我有一个 .net 3.5 网站,它使用 Microsoft.Practices.EnterpriseLibrary 调用数千个不同的存储过程。

我们遇到了很多超时,经过一些游戏和测试,在存储过程中表连接的末尾使用 (nolock) 效果很好,并减少了超时。

我现在想对所有 sps 执行此操作。我可以将(nolock)添加到所有表名,但是更好的主意是使用 SQL “SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED”设置隔离级别

我不想将此添加到所有 sp 的开头(因为有很多),所以正在寻找一种将其添加到连接的方法。

调用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 中的配置设置,但无法弄清楚它是什么,或者我是否在正确的轨道上。

非常感谢任何帮助。

干杯阿姆吉德

4

1 回答 1

1

我假设您使用的是 SQL Server?

尝试在数据库上设置READ COMMITTED SNAPSHOT 。

浏览此处获取更多信息:

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

于 2009-09-30T04:21:23.723 回答