3

Microsoft.Practices.EnterpriseLibrary を使用して、何千もの異なるストアド プロシージャを呼び出す .net 3.5 Web サイトがあります。

多くのタイムアウトが発生しており、いくつかのプレイとテストの後、ストアド プロシージャのテーブル ジョインの最後で (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 に答える