Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 CLR Table Valued Function и большие данные (yield)  [new]
MaratSH
Member

Откуда: Moscow
Сообщений: 179
Как вообще возможно с помощью CLR Table Valued Function считывать данные из серверной ("context connection = true") таблицы и отдавать серверу постепенно, не загружая все записи в память?
Если использовать yield то при запросе из такой табличной функции ругается, и ругается как бы справедливо, согласно документации, где сказано, что нельзя обращаться к данным из FillRow ...
Если использовать свои IEnumerable и IEnumerator в которые передать уже открытый SqlDatareader, то в IEnumerator.MoveNext этот ридер уже почему-то закрыт! Передаю даже SqlConnection в IEnumerable и IEnumerator и это соединение тоже оказывается закрытым при вызове в IEnumerator.MoveNext ...
Цепляю к SqlConnection.StateChange свой обработчик, чтобы понять, когда блин закрывается и закрывается ли соединение, так нет же, не срабатывает этот обработчик вообще.
Что за тупизм? Они что совсем дернулись эти мелкосовтовцы?
13 июл 14, 00:20    [16296886]     Ответить | Цитировать Сообщить модератору
 Re: CLR Table Valued Function и большие данные (yield)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37143
Модератор: Господа, ведите себя дружно. А то забаню.
13 июл 14, 02:35    [16297075]     Ответить | Цитировать Сообщить модератору
 Re: CLR Table Valued Function и большие данные (yield)  [new]
gandjustas
Member

Откуда:
Сообщений: 857
Блог
MaratSH,

http://www.ienablemuch.com/2013/07/streaming-table-valued-function-via-clr.html

А вообще зачем отдавать данные из ридера, подключенного к ContextConnection, внутри CLR функции? Обычную inline функцию написать нельзя?
13 июл 14, 03:36    [16297140]     Ответить | Цитировать Сообщить модератору
 Re: CLR Table Valued Function и большие данные (yield)  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
А CLR только для постраничного считывания или имеется ещё какой-то смысл?
14 июл 14, 11:55    [16300394]     Ответить | Цитировать Сообщить модератору
 Re: CLR Table Valued Function и большие данные (yield)  [new]
gandjustas
Member

Откуда:
Сообщений: 857
Блог
Jovanny
А CLR только для постраничного считывания или имеется ещё какой-то смысл?


Самый частый адекватный кейс для clr - табличная функция для матчей регулярного выражения по строке. Все остальное что я видел - сомнительно.
14 июл 14, 13:16    [16301008]     Ответить | Цитировать Сообщить модератору
 Re: CLR Table Valued Function и большие данные (yield)  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Так может обернуть CLR-функцию T-SQL функцией, организовав в последней постраничный вывод?
Построчно обрабатывать?
14 июл 14, 15:46    [16302015]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить