2010-01-23 9 views
1

У меня есть хранимая процедура SQL Server, которая использовалась годами. Эта хранимая процедура вызывает множество других процедур. Я хотел бы каждый раз выполнять каждую внутреннюю процедуру и реализовывать свою бизнес-логику в проекте .NET Class.Вопрос хранимой процедуры SQL Server

Для этого мне нужно вызвать сборку .NET из родительской хранимой процедуры, а возвращаемый результат будет использоваться родительской процедурой. Поскольку SQL Server 2005 и выше имеют CLR-интеграцию, поэтому я считаю, что выполнение сборки .NET внутри хранимой процедуры [или любых объектов базы данных] не должно быть большой проблемой, можете ли вы указать мне некоторые ссылки, где я могу найти примеры или статью для реализации Это?

Большое спасибо за помощь.

ответ

3

Я действительно чувствую, что это будет нецелевое использование SQL CLR. Цель интеграции CLR - поддерживать сложные типы данных и операции, которые обычно очень трудно выполнять в чистом SQL (такие как последовательности, регулярные выражения, иерархия, геопространство и т. Д.). Не применять модель домена в вашей базе данных.

Доменные модели и бизнес-логика отдельно от моделей реляционных/данных. Они должны быть в определенном бизнес-уровне. Не взламывайте их в базу данных с помощью CLR.

(Примечание: Я использую SQLCLR справедливого бита, я не перила на интеграции CLR я просто не думаю, что этот вопрос отражает мудрое решение дизайна...)

+0

согласен с этими точками - обязательно смотреть в то, что CLR может предложить и получить ощущение, когда он должен и не должен быть использован в течение TSQL. – AdaTheDev

+0

Не говоря уже о том, что это звучит как потенциальная головная боль производительности – RobS

+0

@ Rob Sanders: Когда-нибудь я напишу о том, как я смог использовать CLR для уменьшения размера 80% и улучшения скорости и пропускной способности 10-12x. ;) Используется тщательно и разумно, это может быть удивительный инструмент, который ставит SQL Server в путь выше кривой, но я также видел некоторые действительно пугающие CLR-хаки у людей, которые не совсем «поняли». Я думаю, что часть проблемы - отсутствие проверенных рекомендаций и полезных примеров в реальном мире. – Aaronaught

0

Я думаю, вы должны использовать SQL Службы интеграции с сервером (SSIS). Насколько я понимаю, он решает этот случай, организовывать вызовы процедур и дает вам гораздо больше.

Я не уверен, что решение этого решения за пределами уровня db является хорошим решением.

Надеется, что это помогает ..

Смежные вопросы