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

Применимо к: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 enabledsp_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 (не собственного);

Внимание!

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

Чтобы обновить версию сборки

См. также:

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