SQL Server CLR для встраивания бизнес-логики и планирования выполнения с агентом SQL Server - PullRequest
1 голос
/ 17 июня 2010

У меня есть бизнес-логика приложения, похожего на рабочий процесс, в библиотеке классов C #, но в конце каждого месяца необходимо вызывать определенный процесс в библиотеке, я подумал, что идеальным механизмом для запуска этого запланированного выполнения является использованиеАгент сервера Sql (желательно, работа на SQL, хотя я готов даже пойти в ад служб SSIS, если это абсолютно необходимо), но вопрос в том, как вызвать процесс библиотеки приложения из работы на SQL?

библиотека приложений также используется со страниц asp.net, поэтому обычно она имеет контекст веб-приложения (web.config) с настроенными базами данных ввода и вывода

Я понимаю, что шаги болееили меньше

1) внедрить библиотеку классов в сборку CLR сервера sql, подписать ее с помощью сильного ключа и развернуть ее 2) вызвать библиотеку

, но мне не совсем понятно, когда развертывается такаяСборка CLR, что происходит с контекстом веб-приложения?Как мне точно перейти к развертыванию CLR с подходящим app.config?Должен ли я повторно развернуть CLR, если мне нужно изменить строки подключения?

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

1 Ответ

1 голос
/ 22 июля 2010

Во-первых, этот пост заканчивается "использовать SSIS": -P

Пока ваша библиотека содержит ссылки на System.Web.dll, я не думаю, что вы сможете зарегистрировать ее вSQL Server как сборка SQLCLR.Сборки SQLCLR очень ограничены и не могут содержать никаких ссылок.

Вы можете переместить определенные части интерфейса вашей бизнес-логики в отдельную библиотеку уровня представления.Как правило, это лучшее решение, чем сочетание бизнес-логики и классов представления, таких как контекст веб-приложения.После этого вы можете попытаться развернуть сборку на SQL Server.

Теперь вы можете создать вторую библиотеку SQLCLR, содержащую хранимые процедуры .NET, которые управляют вашими бизнес-объектами.

ОднакоЯ действительно не вижу преимущества SQLCLR здесь.Это потребует огромных изменений в вашем исходном коде и приведет к нескольким ограничениям для всего вашего приложения.

Мои личные предпочтения будут Либо используйте пакет служб SSIS.Здесь вы можете ссылаться на любую другую DLL и использовать ее функциональность.Или напишите простое консольное приложение .NET, которое будет запускаться агентом SQL.В обоих случаях реализация почти одинакова.

SQLCLR специально разработан для обработки чисто специфических задач базы данных, которые попадают в стену возможных (и многообещающих) функций T-SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...