2009-09-30 5 views
3

У меня есть веб-сайт .net 3.5, который вызывает тысячи разных хранимых процедур с использованием Microsoft.Practices.EnterpriseLibrary.Установите уровень изоляции по умолчанию для Microsoft.Practices.EnterpriseLibrary

Мы получали много тайм-аутов, и после некоторых игр и тестирования использования (nolock) в конце таблицы соединение в хранимых процедурах работает очень хорошо и уменьшает таймауты.

Я хочу сделать это со всеми sps. Я мог бы добавить (nolock) ко всем именам таблиц, однако лучше понять, как установить уровень изоляции, используя в SQL «SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED»

Я не хочу добавлять это в начало всех sp (as их так много), поэтому он искал способ добавить его в соединение.

Пример кода называть зр следующего

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

ответ

1

Предполагаю, что вы используете SQL Server?

Попробуйте установить READ COMMITTED SNAPSHOT в базе данных.

Смотрите здесь для получения дополнительной информации:

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

+0

Извините за поздний ответ. Это сработало отлично. Он работает на борту и вообще не нуждается в каких-либо изменениях кода, кроме удаления (noLock), который я уже положил в cheers –

+0

hmmmm да ... да да, конечно, действительно – Scozzard

Смежные вопросы