Расширение возможностей баз данных Microsoft SQL Server c помощью функций определяемых пользователем. Часть 2. Практическое применение в базе данных

В предыдущей статье была скомпилирована SQLCLR сборка, которая содержит функцию для вычисления MD5. Теперь необходимо интегрировать её в базу данных (БД).

Существует 2 способа интеграции:

  • Автоматическая. Когда БД целиком создаётся в Visual Studio и по завершении разработки остаётся только выполнить развёртывание проекта;
  • Ручной. Когда сборка создаётся отдельно (обычно для уже существующей БД) и её требуется интегрировать в БД для дальнейшего использования.

Рассмотрим 2й способ, так как он наиболее наглядный.

Для наглядной иллюстрации используем БД Md5, которая создана специально для этого примера, и сборку SQLCLR, созданную в предыдущей статье. В этой БД есть только 1 таблица MD5 с единственным полем Hash.

Вначале загрузим сборку в БД. Для этого необходимо выполнить следующий сценарий на Transact-SQL (T-SQL).

В данном примере загружается сборка CLRMD5.dll созданная в предыдущей статье.

В SQL Server Management Studio для этого достаточно открыть в нужной БД ветку «Программирование» — «Сборки» и в контекстном меню выбрать команду «Создать сборку».

В открывшемся диалоговом окне необходимо указать путь сборке (можно прописать вручную или выбрать с помощью диалога открытия файла (кнопка «Обзор»)). После этого остаётся только нажать кнопку «Ok».

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

После того, как сборка загружена в БД, необходимо изменить настройки Microsoft SQL Server, чтобы разрешить выполнение .NET кода. Для этого необходимо выполнить следующий набор команд T-SQL.

 

В SQL Server 2014 достаточно только

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

Блок [CLRMD5].[UserDefinedFunctions].[getMd5] это полное имя импортируемой функции в сборке, включая класс.

После завершения всех вышеописанных можно использовать функцию в программном коде на T-SQL. Протестируем её. Добавим в таблицу Hash значение MD5 для слова Test.

В результате, последующей выборки можно убедиться в корректности работы функции изSQLCLR сборки.

При этом, важно особо подчеркнуть, что значение хэш-суммы было вычислено непосредственно в БД без использования каких-либо вспомогательных средств.

SQLCLR – это очень мощная и гибкая технология. В умелых руках с её помощью можно решать сложнейшие задачи, которые лежат далеко за пределами «обычной» работы с БД.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *