Мысли о расширенных хранимых процедурах - PullRequest
1 голос
/ 19 февраля 2010

Я ищу для вставки и обновления записей в базе данных, используя функции и логику, которые не доступны в SQL Server или любой другой СУБД в этом отношении. Погуляв немного сегодня утром, я натолкнулся на концепцию расширенных хранимых процедур. Насколько я могу судить, я должен быть в состоянии скомпилировать желаемую функциональность в dll, сделать сохраненный процесс, используя эту dll для вставки / обновления.

Однако большинство статей и примеров, с которыми я сталкивался, несколько устарели (~ 2000). Являются ли расширенные хранимые процедуры все еще приемлемой практикой? Я далеко не эксперт в этой области, поэтому любые другие предложения или комментарии будут с благодарностью.

Ответы [ 3 ]

8 голосов
/ 19 февраля 2010

Если вы используете SQL Server 2005 или более позднюю версию, SQL CLR - это область, на которую стоит обратить внимание. Вы можете вызывать код .NET из SQL Server.

Эта статья о MSDN - хорошее место для начала.

2 голосов
/ 19 февраля 2010

Я обычно рекомендую не использовать процедуры CLR, в большинстве случаев вы можете реорганизовать проблему, с которой вы столкнулись, в нечто, что Transact Sql может обработать. Наибольшую обеспокоенность вызывает процедурный подход, который часто сопровождает использование процедур CLR, когда база данных отношений работает лучше всего при выполнении операций на основе множества.

Итак, первый вопрос, который я всегда задаю, заключается в том, чтобы в любом случае преобразовать проблему в операцию, основанную на множествах.

Если нет, то я спрашиваю, почему вы хотите выполнять код внутри сервера базы данных, а не на уровне приложения? Подумайте о влиянии на производительность, которое вы можете оказать, разместив логику в базе данных. (Это может не быть проблемой, если на вашем БД достаточно времени для обработки).

Если вы все же решите использовать процедуры CLR, я думаю, что их лучше всего применять для интенсивных вычислений и сложной логики.

2 голосов
/ 19 февраля 2010

Являются ли расширенные хранимые процедуры все еще приемлемой практикой?

Нет, они официально устарели и будут отменены в будущем выпуске.См. Устаревшие возможности компонента Database Engine в SQL Server 2008 , в таблице Функции, не поддерживаемые в будущей версии SQL Server :

  • Расширенное программирование хранимых процедур:Вместо этого используйте CLR Integration.
...