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


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

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

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

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

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

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

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

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

Создание сборки с помощью 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 enabled системной хранимой процедуры sp_configure для отключения или включения выполнения всех сборок, переданных в SQL Server. Отключение выполнения сборки не допускает выполнения функций среды CLR, хранимых процедур, триггеров, статистических выражений и определяемых пользователем типов, а также останавливает все эти объекты, выполняющиеся в настоящее время. Отключение выполнения сборки не отключает способность создавать, изменять или удалять сборки. Дополнительные сведения см. в разделе Параметр clr enabled.

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

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

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

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

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

  • Материализованные вычисляемые столбцы, которые ссылаются на методы в сборке либо непосредственно, либо косвенно — через функции и методы Transact-SQL.

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

ПредупреждениеВнимание!

Если не указан параметр WITH UNCHECKED DATA, то SQL Server старается избежать выполнения ALTER ASSEMBLY, если сборка новой версии изменяет существующие данные в таблицах, индексах и т. д. Однако при обновлении сборки в среде CLR SQL Server не обеспечивает согласованности вычисляемых столбцов, индексов, индексированных представлений или выражений с базовыми процедурами или типами. Следует проявлять осторожность при исполнении 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 CHECKTABLE по отношению к каждой таблице, которая имеет непроверенные данные. Если DBCC CHECKTABLE терпит неудачу, надо либо удалить неправильные строки таблицы, либо изменить код сборки для решения проблем, а затем выполнить дополнительные инструкции ALTER ASSEMBLY.

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

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

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

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

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

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

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

См. также

Основные понятия

Другие ресурсы