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


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

Сборку, зарегистрированную в SQL Server, можно обновить более поздней версией с помощью инструкции ALTER ASSEMBLY. Для обновления сборки используется следующий синтаксис инструкции ALTER ASSEMBLY:

ALTER ASSEMBLY SQLCLRTestFROM 'C:\MyDBApp\SQLCLRTest.dll'

Инструкция ALTER ASSEMBLY не прерывает выполняющиеся процессы, которые используют сборку, они выполняются с неизмененной версией этой сборки. Инструкцию ALTER ASSEMBLY нельзя использовать для изменения сигнатур функций CLR, статистических функций, хранимых процедур и триггеров. К сборке можно добавить новые общие методы, частные методы можно изменять любым образом, а общие методы можно изменять, если не изменялись сигнатуры или атрибуты. Поля в определяемом пользователем типе с собственной сериализацией, в том числе элементы данных или основные классы, нельзя изменить с помощью ALTER ASSEMBLY. Любые другие изменения не поддерживаются. Дополнительные сведения см. в разделе ALTER ASSEMBLY (Transact-SQL).

Изменение набора разрешений сборки

Набор разрешений сборки можно также изменить с помощью инструкции ALTER ASSEMBLY. Следующая инструкция изменяет набор разрешений сборки SQLCLRTest на EXTERNAL_ACCESS.

ALTER ASSEMBLY SQLCLRTestWITH PERMISSION_SET = EXTERNAL_ACCESS 

Если набор разрешений сборки меняется с SAFE на EXTERNAL_ACCESS или UNSAFE, необходимо вначале создать для сборки первичный ключ и соответствующее имя входа с разрешением EXTERNAL ACCESS ASSEMBLY или UNSAFE ASSEMBLY. Дополнительные сведения см. в разделе Создание сборки.

Дополнение исходного кода в сборку

Предложение ADD FILE в синтаксисе инструкции ALTER ASSEMBLY отсутствует в инструкции CREATE ASSEMBLY. Оно обеспечивает возможность добавления исходного кода или любых других файлов, связанных со сборкой. Файлы копируются из исходных расположений и сохраняются в системных таблицах базы данных. Это обеспечивает постоянную доступность исходного кода или других файлов на тот случай, если возникнет необходимость повторного создания или документирования текущей версии определяемого пользователем типа.

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

ALTER ASSEMBLY Point

ADD FILE FROM 'C:\Projects\Point\Point.cs' AS PointSource