Преимущества использования управляемого кода для создания объектов баз данных
Помимо языка программирования Transact-SQL можно использовать языки .NET Framework для создания объектов базы данных и извлечения и обновления данных в базах данных SQL Server. В проектах Visual Basic или Visual C# можно создать хранимые процедуры, триггеры, статистические выражения, пользовательские функции и пользовательские типы. Объекты базы данных, написанные в управляемом коде, называются объектами SQL Server со средой CLR или объектами SQL CLR.
Примечание
По умолчанию функция интеграции среды CLR в SQL Server отключена.Для использования элементов проекта SQL Server необходимо включить интеграцию со средой CLR.Для этого используйте параметр clr enabled хранимой процедуры sp_configure.Дополнительные сведения см. в разделе Параметр clr enabled на веб-сайте корпорации Майкрософт.
В следующем списке приводится сводка преимуществ использования языка .NET Framework вместо Transact-SQL.
Расширенная модель программирования. Языки .NET Framework предлагают конструкции и возможности, ранее недоступные для разработчиков SQL Server.
Расширенная безопасность Управляемый код выполняется в общеязыковой среде выполнения, размещенной в ядре базы данных. Это делает объекты базы данных платформы .NET Framework более безопасными по сравнению с расширенными хранимыми процедурами в более ранних версиях SQL Server. При использовании объектов базы данных, созданных в Visual Basic или Visual C#, управление доступом для кода в этих языках сочетается с пользовательскими разрешениями в SQL Server.
Пользовательские типы и статистические выражения. Пользовательские типы и пользовательские статистические выражения — это два управляемых объекта базы данных, расширяющие возможности SQL Server по хранению и построению запросов.
Общая среда разработки Разработка баз данных интегрирована в среду разработки Microsoft Visual Studio. Разработчики используют для разработки и отладки объектов баз данных и скриптов те же средства, что и для написания компонентов и служб платформы .NET Framework промежуточного или клиентского уровня.
Более высокая производительность. Некоторые функции, например выполняющие математические операции над каждой строкой в базе данных, могут выполняться эффективнее, если они представляют собой скомпилированные сборки, построенные из проекта Visual Basic или Visual C#, чем если они написаны на языке Transact-SQL, который представляет собой интерпретируемый код. Например, будет повышена производительность функций, особенно тех, которые выполняют целочисленные операции. Однако хранимые процедуры, осуществляющие только доступ к данным, не будут выполняться эффективнее.
Набор операторов языка. Visual Basic или Visual C# предоставляют возможности, недоступные в Transact-SQL, такие как массивы, обработка сложных исключений и повторное использование кода.
Повторное использование кода. Библиотека управляемых сборок может создаваться и распространяться легче, чем скрипт Transact-SQL.
Расширение использование Visual Basic или Visual C# можно создать два объекта базы данных, которые не могут быть созданы с помощью Transact-SQL: статистические выражения и определяемые пользователем типы.
Совершенствование существующих навыков Можно использовать и повышать свои навыки в использовании языков и среды разработки, в работе с которыми пользователь уже имеет опыт, для создания объектов базы данных.
Обширный опыт разработки. При разработке объектов базы данных с помощью шаблона проекта SQL Server имеет место полная интеграция с системой проектов. Сюда входят построение, отладка и развертывание на нескольких серверах.
Стабильность и надежность. Объекты базы данных, создаваемые с помощью Visual Basic или Visual C#, являются более безопасными, стабильными и надежными, чем расширенные хранимые процедуры, которые могут вызывать утечки памяти или другие проблемы, снижающие производительность и надежность сервера. При запуске хранимых процедур, созданных в Visual Basic или Visual C#, управление памятью и работа с потоками хранимой процедурой не выполняются и, таким образом, обрабатываются более надежно.
Хранимые процедуры и триггеры
Хранимые процедуры представляют собой предкомпилированную коллекцию программных инструкций, которая выполняет операции в базе данных, хранится под определенным именем и обрабатывается как единое целое единое. Дополнительные сведения о хранимых процедурах см. в документации по SQL Server.
Триггер — это особый тип хранимой процедуры, которая активируется при изменении данных в указанной таблице с помощью одной или нескольких операций изменения данных: UPDATE, INSERT или DELETE. Также можно создать триггеры уровня базы данных, срабатывающие в ответ на операторы языка DDL. Такие триггеры можно использовать для выполнения задач администрирования базы данных, таких как аудит и упорядочивание операций в базе данных. Дополнительные сведения о триггерах см. в документации по SQL Server.
Разработка хранимых процедур и триггеров была улучшена за счет набора операторов языков Visual Basic и Visual C#, особенно при реализации сложной процедурной логики, необходимой для применения бизнес-правил. Кроме того, платформа.NET Framework содержит множество библиотек. Особый интерес представляют те, которые позволяют использовать многочисленные средства криптографии, обширные математические библиотеки и внешний доступ к веб-службам, файлам и коммуникационным системам типа "бизнес-бизнес".
Функции
Функции могут воздействовать на одно или несколько значений для возврата либо скалярного значения, либо таблицы. Дополнительные сведения о типах функций, которые предоставляет язык программирования Transact-SQL, см. в документации по SQL Server.
Как и в случае с хранимыми процедурами и триггерами, разработка функций улучшена за счет набора операторов языков Visual Basic и Visual C# и доступа к многочисленным библиотекам, содержащимся в платформе .NET Framework.
Статистические выражения
Агрегатные функции служат для подведения итогов для всех данных в таблице. Они выполняют вычисления над набором значений и возвращают одно скалярное значение. Дополнительные сведения об агрегатных функциях, которые предоставляет язык программирования Transact-SQL, см. в документации по SQL Server.
Чтобы дополнить эти агрегатные функции, можно определить новые агрегатные функции, выполняющие более сложные арифметические операции. Например, можно выполнять вычисления над данными в нескольких строках и вернуть одно значение или создать сцепленную строку.
Пользовательские типы
Типы указывают на природу данных. Дополнительные сведения о наборе системных типов данных, поставляемых вместе с SQL Server, см. в документации по SQL Server.
С помощью Visual Basic и Visual C# можно определить новые типы, чтобы пользователь больше не был ограничен предопределенными типами, поставляемыми вместе с SQL Server. Можно создавать простые типы, например почтовые коды, или более сложные типы для разбора сведений, возвращаемых из транзакции над кредитными картами. Кроме того, при работе с пользовательскими типами данные могут интерпретироваться и обрабатываться как на SQL-клиенте, так и на SQL Server. С помощью ADO.NET можно загрузить сборку, содержащую определение типа, с сервера SQL Server и использовать ее для проверки данных на SQL-клиенте.
См. также
Задачи
Практическое руководство. Создание и запуск триггера SQL Server при помощи интеграции со средой CLR
Пошаговое руководство. Создание хранимой процедуры в управляемом коде
Практическое руководство. Отладка хранимой процедуры SQL CLR
Ссылки
Атрибуты проектов баз данных SQL в среде CLR и объектов баз данных
Основные понятия
Введение в интеграцию SQL Server со средой CLR (ADO.NET)
Преимущества использования управляемого кода для создания объектов баз данных