Недавно мы превратили набор сложной логики планирования на C # в хранимую процедуру SQL CLR (запущенную в SQL Server 2005). Мы полагали, что наш код является отличным кандидатом в SQL CLR, потому что:
- Логика включает в себя тонны данных с сервера sQL.
- Логика сложна и ее трудно выполнить с помощью TSQL
- Нет потоков или синхронизации или доступа к ресурсам вне песочницы.
Результат нашего sp довольно хорош. Однако, поскольку выходные данные нашей логики представлены в виде нескольких таблиц данных, мы не можем просто вернуть один набор строк в качестве результата sp. Вместо этого, в нашем коде у нас есть много операторов «INSERT INTO ....» в циклах foreach, чтобы сохранить каждую запись из универсальной коллекции C # в таблицы SQL. Во время проверки кода кто-то выразил беспокойство по поводу того, может ли встроенный подход SQL INSERT в SQL CLR вызвать проблему производительности, и задался вопросом, есть ли другой лучший способ выгрузить данные (из наших общих коллекций C #).
Итак, есть предложения?