Реализация сборок

Область применения: SQL Server

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

  • Создание сборок.
  • Изменение сборок.
  • Удаление, отключение и включение сборок.
  • Управление версиями сборок.

Создание сборок

Сборки создаются в SQL Server с помощью инструкции Transact-SQL CREATE ASSEMBLY или в СРЕДЕ SQL Server Management Studio с помощью редактора сборок. Кроме того, развертывание проекта SQL Server в Microsoft Visual Studio регистрирует сборку в базе данных, которая была указана для проекта. Дополнительные сведения см. в статье Deploying CLR Database Objects.

Изменение сборок

Сборки изменяются в SQL Server с помощью инструкции Transact-SQL ALTER ASSEMBLY или в SQL Server Management Studio с помощью редактора сборок.

Вы можете изменить сборку, если вы хотите выполнить следующие действия:

  • Изменить реализацию сборки путем передачи более новой версии бинарных файлов сборки. Дополнительные сведения см. в разделе "Управление версиями сборок " далее в этой статье.

  • Изменить набор разрешений сборки. Дополнительные сведения см. в разделе "Проектирование сборок".

  • Изменить видимость сборки. Видимые сборки доступны для ссылки на SQL Server. Невидимые сборки недоступны, даже если они отправляются в базу данных. По умолчанию сборки, отправленные в экземпляр SQL Server, видны.

  • Добавить или удалить отладку или исходный файл, связанный со сборкой.

Удаление, отключение и включение сборок

Сборки удаляются с помощью инструкции Transact-SQL DROP ASSEMBLY или SQL Server Management Studio.

По умолчанию все сборки, созданные в SQL Server, отключены от выполнения. Вы можете использовать clr enabled параметр системной sp_configure хранимой процедуры, чтобы отключить или включить выполнение всех сборок, отправленных в SQL Server. Отключение выполнения сборки предотвращает выполнение функций среды CLR, хранимых процедур, триггеров, агрегатов и определяемых пользователем типов и останавливает все, которые в настоящее время выполняются. Отключение выполнения сборки не отключает возможность создавать, изменять или удалять сборки. Дополнительные сведения см. в разделе "Конфигурация сервера: включена среда clr".

Дополнительные сведения: sp_configure.

Управление версиями сборок

При отправке сборки в экземпляр SQL Server сборка хранится и управляется в каталогах систем базы данных. Любые изменения, внесенные в определение сборки в Microsoft платформа .NET Framework, должны распространяться на сборку, хранящуюся в каталоге базы данных.

При изменении сборки необходимо выполнить ALTER ASSEMBLY инструкцию для обновления сборки в базе данных. Эта инструкция обновляет сборку до последней копии модулей платформа .NET Framework, содержащих ее реализацию.

Предложение WITH UNCHECKED DATA инструкции ALTER ASSEMBLY указывает SQL Server обновлять даже те сборки, на которые сохраняются данные в базе данных. В частности, необходимо указать WITH UNCHECKED DATA , существует ли какое-либо из следующих элементов:

  • Сохраненные вычисляемые столбцы, которые ссылаются на методы в сборке напрямую или косвенно с помощью функций или методов Transact-SQL.

  • Столбцы определяемого пользователем типа СРЕДЫ CLR, зависящее от сборки, и тип реализует UserDefined формат сериализации (несериализацииNative).

Внимание

Если WITH UNCHECKED DATA не указано, SQL Server пытается предотвратить ALTER ASSEMBLY выполнение, если новая версия сборки влияет на существующие данные в таблицах, индексах или других постоянных сайтах. Однако SQL Server не гарантирует, что вычисляемые столбцы, индексы, индексированные представления или выражения будут согласованы с базовыми подпрограммами и типами при обновлении сборки СРЕДЫ CLR. Будьте осторожны при выполнении ALTER ASSEMBLY , чтобы убедиться, что между результатом выражения и значением, основанным на этом выражении, хранящимся в сборке, нет несоответствия.

Только члены db_owner и db_ddlowner предопределенных ролей базы данных могут выполняться ALTER ASSEMBLY с помощью WITH UNCHECKED DATA предложения.

SQL Server отправляет сообщение в журнал событий приложения Windows, которое сборка была изменена с незаверченными данными в таблицах. Затем SQL Server помечает все таблицы, содержащие данные, зависящие от сборки, как имеющие снятые данные. Столбец has_unchecked_assembly_data sys.tables представления каталога содержит значение 1 для таблиц, содержащих неконтролируемые данные, и 0 для таблиц без флажка.

Чтобы устранить целостность незаверенных данных, запуститесь DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS в каждой таблице, которая содержит снятые данные. При DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS сбое необходимо либо удалить строки таблицы, которые не являются допустимыми, либо изменить код сборки для устранения проблем, а затем выдавать дополнительные ALTER ASSEMBLY инструкции.

ALTER ASSEMBLY изменяет версию сборки. Культура и токен открытого ключа сборки не изменяются. SQL Server не позволяет регистрировать разные версии сборки с одинаковым именем, языком и языком и открытым ключом.

Взаимодействие с политикой на уровне компьютера для привязки версий

Если ссылки на сборки, хранящиеся в SQL Server, перенаправляются в определенные версии с помощью политики издателя или политики администратора на уровне компьютера, необходимо выполнить одно из следующих действий:

  • Убедиться, что новая версия, к которой происходит переадресация, находится в базе данных.

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

В противном случае попытка загрузить новую версию сборки в экземпляр SQL Server завершается ошибкой.

Дополнительные сведения см. в разделе ALTER ASSEMBLY.