Главная » Microsoft SQL Server, Базы данных » Инструкции CLR DDL языка T-SQL и представления каталогов

0

Загрузка типов CLT в SQL Server требует создания двух объектов базы данных. В любом случае первой должна быть создана сборка, содержащая типы, и уже затем в ней должны быть созданы сами типы. Создание сборки — это, по существу, акт проверки и загрузки кода MSIL в представление каталога sysassemblies. При выполнении инструкции CREATE ASSEMBLY не может быть создано полезных артефактов. Иерархия сборки состоит из трех представлений.

?               sysassemblies. Это представление содержит одну строку метаданных для каждой сборки, включающую имя сборки и режим безопасности С AS.

?               sysassembly_f iles. Это представление содержит двоичные данные для каждого файла сборки.

?               sysassembly_ref erences. Это представление содержит по одной строке для каждой сборки, на которую в манифесте текущей сборки содержится ссылка.

Сборки

Инструкция DDL CREATE ASSEMBLY содержит всю информацию, необходимую для заполнения представления каталога. Одновременно на сервере не может существовать множество копий одной и той же версии сборки. Для замены простой именованной сборки или ее версии строго именованной необходимо в первую очередь удалить существующую сборку с помощью инструкции DROP ASSEMBLY. Также возможно модифицировать существующую сборку с помощью инструкции ALTER ASSEMBLY. При этом текущая учетная запись NT должна иметь права чтения в месте расположения файлов UNC, откуда должна быть загружена библиотека . dl 1 данной сборки. Даже если проект содержит множество файлов источников, инструкция CREATE ASSEMBLY требует, чтобы только сборки, состоящие из одного файла MSEL, загружались в SQL Server. Делегирование не поддерживается инструкцией CREATE ASSEMBLY. Все сборки, на которые существуют ссылки, и их манифесты должны быть доступны в том же месте сети, что и данная сборка, в противном случае выполнение инструкции CREATE завершится ошибкой.

Всегда создавайте сборки для производственной среды SQL Server с “жестки- Совет         ми” именами.

Инструкции CREATE ASSEMBLY, DROP ASSEMBLY и ALTER ASSEMBLY по умолчанию разрешены для использования членам серверной роли sysadmin и членам роли базы данных db_owner. Если уровень защиты С AS для сборки установлен в EXTERNAL_ACCESS, то учетная запись пользователя, создающего сборку, также должна иметь разрешение EXTERNAL_ ACCESS:

GRANT EXTERNAL_ACCESS to < п о ль зова т ель_ или_ групп a_Windows>

Если режим защиты сборки установлен в unsafe, сборку могут создать только члены серверной роли sysadmin.

Объекты базы данных

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

?               CREATE PROCEDURE. Представление sysobj ects с параметром type, равным "PC".

?               CREATE FUNCTION. Представление sysobj ects с параметром type, равным 11FS", для скалярных функций или " FT" — для табличных функций.

?               CREATE TRIGGER. Представление systriggers с параметром parent_class, равным нулю, для триггеров DDL и равным единице для триггеров DML. Представления sysobj ects также заполняются с параметром type, равным "TR", для триггеров DML, но не заполняются для триггеров DDL.

?               CREATE TYPE. Представление systypes с параметром is_user_type, равным единице, и с параметром is_assembly_type, также равным единице.

?               CREATE AGGREGATE. Представление sysobj ects с параметром type, равным "AF".

Пользователь, создающий типы CLR в базе данных, должен быть либо владельцем сборки, либо иметь к ней разрешение REFERENCES:

GRANT REFERENCES ON < имя_ с б орки> ТО <пользователь_или_группа_№1пс[омз>

Для просмотра сборок, скомпилированных на сервере, доступно динамическое представление управления sysdm_loaded_assemblies. Типичным запросом, предназначенным для определения состава сборок, используемых базой данных в настоящее время, является следующий: SELECT a.clr_name

, USER_NAME(а.principal_id) as [principal]

, la.load_time

, a.permission_set_desc FROM sysdm_clr_loaded_assemblies la JOIN sysassemblies a ON la.assembly_id = a.assembly_id

Программа Visual Studio 2005 для развертывания объектов интеграции CLR в базе данных предлагает графический интерфейс. Во время развертывания “за кулисами” выполняются инструкции CREATE ACCEMBLY и CREATE языка DDL. Администраторы и разработчики должны понимать, как используются обе эти инструкции для загрузки компонентов интеграции CLR в базу данных. Вряд ли развертывание продукта в производственных условиях с помощью Visual Studio будет приемлемым вариантом.

Источник: Нильсен, Пол. Microsoft SQL Server 2005. Библия пользователя. : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2008. — 1232 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии