В моем приложении C # .NET 3.5 я использую CastleProject ActiveRecord поверх NHibernate. Это настольное приложение, использующее MS SQL Server 2008. Я установил тайм-аут команды ADO на 0, чтобы предотвратить исключение тайм-аута во время массовых операций:
<activerecord>
<config>
...
<add key="hibernate.command_timeout" value="0" />
</config>
</activerecord>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
...
<property name="command_timeout">0</property>
</session-factory>
</hibernate-configuration>
Однако я все еще получаю исключение тайм-аута! Журнал NHibernate показывает что-то вроде этого:
Где-то в начале:
2010-10-02 06: 29: 47,746 ИНФОРМАЦИЯ
NHibernate.Driver.DriverBase - установка времени ожидания команды ADO.NET на 0 секунд
Где-то в конце:
2010-10-02 07: 36: 03,020 ОТЛАДКА
NHibernate.AdoNet.AbstractBatcher -
Закрытый IDbCommand, открытый IDbCommand s:
0 2010-10-02 07: 36: 03,382 ОШИБКА
NHibernate.Event.Default.AbstractFlushingEventListener
- Не удалось синхронизировать состояние базы данных с сеансом
NHibernate.HibernateException: An
возникла исключительная ситуация при выполнении
Пакетные запросы ---> System.Data.S
qlClient.SqlException: время ожидания
истекший. Истек срок ожидания
до завершения операции
или сервер не отвечает. в
System.Data.SqlClient.SqlConnection.OnError (SqlException
исключение, Boolean breakConnection)
Как получилось? Как это исправить?