Есть приложение которое вызывает процедуру.
Процедура имеет входной параметр VARCHAR(MAX).
передаю параметр длиноой 500кb — процедура вызывается, передаю параметр 2 мб — процедура не вызывается.
Из сишарпа запрос уходит и висит, в скл профайлере нет вызова. В итоге выдает таймаут ошибку
Здравствуйте, e.thrash, Вы писали:
ET>что посоветуете?
1. разбить строку
2. балк-инсертом запихать во временную таблицу
3. sql-скриптом собрать строку обратно и подать на вход процедуре
Здравствуйте, e.thrash, Вы писали:
ET>Есть приложение которое вызывает процедуру. ET>Процедура имеет входной параметр VARCHAR(MAX). ET>передаю параметр длиноой 500кb — процедура вызывается, передаю параметр 2 мб — процедура не вызывается. ET>Из сишарпа запрос уходит и висит, в скл профайлере нет вызова. В итоге выдает таймаут ошибку
ET>что посоветуете?
1. Попытаться найти максимальный размер, при котором процедура ещё вызываетя
2. Помониnорить, что именно уходит на сервер (через wireshark)
3. Включить в профайлере все сообщения вообще. Возможно, процедура всё же вызывается. По умолчанию в профайлере показываются только сообщения об окончании операции
4. Увеличить таймаут и посмотреть, выполнится ли запрос в принципе. Возможно, просто сама процедура тормозит
5. Как именно вызывается процедура?
6. Ошибка таймаута приходит откуда (покажите stack trace)?
Здравствуйте, Mihas, Вы писали:
M>Здравствуйте, e.thrash, Вы писали:
ET>>что посоветуете? M>1. разбить строку M>2. балк-инсертом запихать во временную таблицу M>3. sql-скриптом собрать строку обратно и подать на вход процедуре
где крутится база?
возможно размер одновременно передаваемых данных превышает допустимый размер — проверьте настройки на сервере.