2010-02-19 4 views
1

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

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

+1

Мне любопытно, какая логика недоступна в MSSSQL или любом другом RDMBS. Являются ли конкретные библиотеки недоступными? На каких других RDMBS вы посмотрели? Oracle? DB2? Postgres? – FrustratedWithFormsDesigner

+0

@FrustratedWithFormsDesigner - типичная вещь (по крайней мере, в SQL Server) - это регулярные выражения. Просто сделать это в .NET, но нет встроенной поддержки в SQL Server – AdaTheDev

+0

Просто любопытно - почему вы хотите, чтобы эта логика была в базе данных? –

ответ

8

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

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

2

Продлен хранимые процедуры еще приемлемая практика?

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

  • Расширенная хранимая процедура программирования: Использование CLR интеграции вместо этого.
2

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

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

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

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

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