|
|
|
VPN, "Timeout expired" и UpdateCommand.CommandTimeout
|
|||
|---|---|---|---|
|
#18+
Добрый день. NET-приложение работает с MS SQL Server через ADO и Typed Dataset. Доступ через VPN. Проблема: частенько в TableAdapter метод Update валится с ошибкой "Timeout expired". Блокировки сервера вряд ли являются причиной, так как по вызову Update на сервере выполняется атомарная операция (единственный T-SQL оператор UPDATE), причем выполняется за считанные миллисекунды, а в UpdateCommand.CommandTimeout задано 60 секунд. Увеличение UpdateCommand.CommandTimeout не помогает: "Timeout expired" все равно ловим регулярно. Остается грешить на неустойчивый VPN. Пришла в голову идея сделать так: вызывать TableAdapter.Update с небольшим таймаутом - скажем, секунды 3. Но делать это в цикле, 10-20 раз, пока команда не выполнится успешно. Вопрос: эта идея - кривой велосипед и жуткий изврат, или имеет право на воплощение? Прошу сильно не ругаться, проект для меня новый, клиент-серверную систему впервые в жизни пишу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2011, 12:45 |
|
||
|
VPN, "Timeout expired" и UpdateCommand.CommandTimeout
|
|||
|---|---|---|---|
|
#18+
Отвечу сам себе. Сделал как и собирался - стал вызывать TableAdapter.Update в цикле, с небольшим комманд-таймаутом. Это немного улучшило ситуацию и число ошибок "Timeout expired" уменьшилось. Также выяснилось, что проблемы были на серверной стороне: неправильный индекс на таблице + неоптимальный запрос. После их исправления, ошибка стала возникать раз в 20 реже, чем раньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2011, 14:14 |
|
||
|
|

start [/forum/topic.php?fid=17&fpage=46&tid=1350836]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
22ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 301ms |

| 0 / 0 |
