застряла строка
От: e.thrash  
Дата: 24.04.15 11:50
Оценка:
Есть приложение которое вызывает процедуру.
Процедура имеет входной параметр VARCHAR(MAX).
передаю параметр длиноой 500кb — процедура вызывается, передаю параметр 2 мб — процедура не вызывается.
Из сишарпа запрос уходит и висит, в скл профайлере нет вызова. В итоге выдает таймаут ошибку

что посоветуете?
Re: застряла строка
От: Mihas  
Дата: 24.04.15 11:54
Оценка:
Здравствуйте, e.thrash, Вы писали:

ET>что посоветуете?

1. разбить строку
2. балк-инсертом запихать во временную таблицу
3. sql-скриптом собрать строку обратно и подать на вход процедуре
Re: застряла строка
От: vmpire Россия  
Дата: 24.04.15 12:27
Оценка:
Здравствуйте, e.thrash, Вы писали:

ET>Есть приложение которое вызывает процедуру.

ET>Процедура имеет входной параметр VARCHAR(MAX).
ET>передаю параметр длиноой 500кb — процедура вызывается, передаю параметр 2 мб — процедура не вызывается.
ET>Из сишарпа запрос уходит и висит, в скл профайлере нет вызова. В итоге выдает таймаут ошибку

ET>что посоветуете?

1. Попытаться найти максимальный размер, при котором процедура ещё вызываетя
2. Помониnорить, что именно уходит на сервер (через wireshark)
3. Включить в профайлере все сообщения вообще. Возможно, процедура всё же вызывается. По умолчанию в профайлере показываются только сообщения об окончании операции
4. Увеличить таймаут и посмотреть, выполнится ли запрос в принципе. Возможно, просто сама процедура тормозит
5. Как именно вызывается процедура?
6. Ошибка таймаута приходит откуда (покажите stack trace)?
Re[2]: застряла строка
От: hepper  
Дата: 25.04.15 23:53
Оценка:
Здравствуйте, Mihas, Вы писали:

M>Здравствуйте, e.thrash, Вы писали:


ET>>что посоветуете?

M>1. разбить строку
M>2. балк-инсертом запихать во временную таблицу
M>3. sql-скриптом собрать строку обратно и подать на вход процедуре

где крутится база?
возможно размер одновременно передаваемых данных превышает допустимый размер — проверьте настройки на сервере.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.