Поделиться через


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

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

Эта тема предоставляет сведения о следующих областях, чтобы помочь в реализации и работе со сборками в базе данных.

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

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

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

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

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

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

Создание сборки с помощью Transact-SQL

Создание сборки с помощью SQL Server Management Studio

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

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

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

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

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

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

Изменение сборки с помощью Transact-SQL

Изменение сборки с помощью SQL Server Management Studio

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

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

Удаление сборки с помощью Transact-SQL

Удаление сборки с помощью SQL Server Management Studio

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

Отключение и включение выполнения сборки

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

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

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

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

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

  • зависящие от сборки столбцы определяемого пользователем типа данных CLR и типа, реализующего сериализацию формата UserDefined (не собственного);

Внимание

Если не указан параметр 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 завершится ошибкой.

Обновление версии сборки

См. также

Сборки (ядро СУБД)
Получение сведений о сборках