ALTER ASSEMBLY (Transact-SQL)

Изменения: 5 декабря 2005 г.

Изменяет сборку, изменяя при этом свойства каталога SQL Server сборки. Инструкция ALTER ASSEMBLY обновляет ее до последней копии модулей Microsoft .NET Framework, содержащих ее реализацию, и добавляет или удаляет связанные с ней файлы. Сборки создаются при помощи инструкции CREATE ASSEMBLY.

Значок ссылки на разделСоглашения о синтаксисе в Transact-SQL

Синтаксис

ALTER ASSEMBLY assembly_name
    [ FROM <client_assembly_specifier> | <assembly_bits> ]
    [ WITH <assembly_option> [ ,...n ] ]
    [ DROP FILE { file_name [ ,...n ] | ALL } ]
    [ ADD FILE FROM 
    { 
                client_file_specifier [ AS file_name ] 
      | file_bits AS file_name 
    } [,...n ] 
    ] [ ; ]
<client_assembly_specifier> :: =
        '\\computer_name\share-name\[path\]manifest_file_name'
  | '[local_path\]manifest_file_name'

<assembly_bits> :: =
    { varbinary_literal | varbinary_expression }

<assembly_option> :: =
    PERMISSION_SET = { SAFE | EXTERNAL_ACCESS | UNSAFE } 
  | VISIBILITY = { ON | OFF } ]
  | UNCHECKED DATA

Аргументы

  • assembly_name
    Имя сборки, которую необходимо изменить. Аргумент assembly_name должен уже существовать в базе данных.
  • FROM <client_assembly_specifier> | <assembly_bits>
    Обновляет сборку до последней копии модулей платформы .NET Framework, содержащих ее реализацию. Этот параметр может использоваться при условии, что файлы, связанные с указанной сборкой, отсутствуют.

    Аргумент <client_assembly_specifier> указывает сетевое или локальное расположение, в котором находится обновляемая сборка. Сетевое расположение включает имя компьютера, имя общего ресурса и путь в этом ресурсе. Аргумент manifest_file_name указывает имя файла, содержащего манифест сборки.

    Аргумент <assembly_bits> является двоичным значением для сборки.

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

  • PERMISSION_SET = { SAFE | EXTERNAL_ACCESS | UNSAFE }
    Указывает для сборки свойство набора разрешений на доступ к коду .NET Framework. Дополнительные сведения об этом свойстве см. в разделе CREATE ASSEMBLY (Transact-SQL).
  • VISIBILITY = { ON | OFF }
    Указывает, видима ли сборка для создания на ее основе функций среды CLR, хранимых процедур, триггеров, определяемых пользователем типов и пользовательских статистических функций. При установке OFF сборка может быть вызвана только при помощи других сборок. Если имеются объекты базы данных среды CLR, уже созданные с помощью сборки, ее видимость не может быть изменена. Сборки, на которые ссылается аргумент assembly_name, передаются по умолчанию как невидимые.
  • UNCHECKED DATA
    По умолчанию инструкция ALTER ASSEMBLY не выполняется в том случае, если она должна проверять согласованность отдельных строк таблицы. Этот параметр позволяет впоследствии провести позже при помощи инструкции DBCC CHECKTABLE. Если данный параметр указан, SQL Server выполняет инструкцию ALTER ASSEMBLY даже в случае, если в базе данных имеются таблицы, содержащие:

    • материализованные вычисляемые столбцы, которые непосредственно или косвенно ссылаются на методы в сборке при помощи функций или методов языка Transact-SQL;
    • ограничения CHECK, которые непосредственно или косвенно ссылаются на методы в сборке;
    • столбцы пользовательского типа данных CLR, зависящего от сборки, и типа данных, реализующего пользовательский (UserDefined, а не Native) формат сериализации;
    • столбцы пользовательского типа данных CLR, ссылающиеся на представления, созданные при помощи ключевого слова WITH SCHEMABINDING.

    Любые имеющиеся ограничения CHECK отключаются и помечаются как ненадежные. Таблицы, содержащие столбцы, зависящие от сборки, помечаются как содержащие непроверенные данные, и сохраняют эту метку до тех пор, пока не будут проверены явно.

    Указывать этот параметр могут только члены фиксированных ролей db_owner и db_ddlowner базы данных.

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

  • [ DROP FILE { file_name[ ,...n] | ALL } ]
    Удаляет из базы данных файл, связанный со сборкой, или все файлы, связанные со сборкой. Если следующей является инструкция ADD FILE, инструкция DROP FILE выполняется в первую очередь. Это позволяет заменить файл другим файлом с тем же именем.
  • [ ADD FILE FROM { client_file_specifier [ AS file_name] | file_bitsAS file_name}
    Передает на сервер файл, который должен быть связан со сборкой (например, исходный код, файлы отладки и другие, связанные с этим данные) на сервер и делает его видимым в представлении каталога sys.assembly_files. Аргумент client_file_specifier указывает расположение, из которого передается файл. Для указания списка двоичных значений, составляющих файл, может также использоваться аргумент file_bits. Аргумент file_name указывает имя, под которым файл будет сохранен на экземпляре SQL Server. Аргумент file_name должен обязательно указываться, если указывается аргумент file_bits, и может отсутствовать, если указывается аргумент client_file_specifier. Если параметр file_name не указан, часть file_name аргумента client_file_specifier используется в качестве аргумента file_name.

Замечания

Инструкция ALTER ASSEMBLY не нарушает сеансы, в которых в настоящий момент работает код изменяемой сборки. Текущие сеансы завершают выполнение с неизмененной сборкой.

Если указывается предложение FROM, инструкция ALTER ASSEMBLY обновляет сборку в соответствии с последними предоставленными копиями модулей. Так как в экземпляре SQL Server могут быть функции среды CLR, хранимые процедуры, триггеры, типы данных и пользовательские статистические функции, уже использующие сборку, инструкция ALTER ASSEMBLY привязывает их к последней реализации сборки. Для выполнения этой привязки в измененной сборке должны существовать методы с подписями, с которыми сопоставлены функции CLR, хранимые процедуры и триггеры. Классы, реализующие пользовательские типы данных CLR и пользовательские статистические функции, должны удовлетворять требованиям для определяемых пользователем типов или статистических функций.

ms186711.Caution(ru-ru,SQL.90).gifВнимание!
Если параметр WITH UNCHECKED DATA не указан, SQL Server предпринимает попытку не допустить исполнения инструкции ALTER ASSEMBLY, если сборка новой версии изменит существующие данные в табличных, индексных или других сохраняемых страницах. Однако при обновлении сборки в среде CLR SQL Server не обеспечивает согласованности вычисляемых столбцов, указателей, индексированных представлений или выражений с базовыми процедурами или типами. Выполняйте инструкции ALTER ASSEMBLY с осторожностью, чтобы избежать несоответствия результата выражения и его значения, хранящегося в сборке.

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

С помощью инструкции ALTER ASSEMBLY нельзя изменить:

  • Подписи функций CLR, статистических функций, хранимых процедур и триггеров в экземпляре SQL Server, на которые ссылается сборка. Инструкция ALTER ASSEMBLY не выполняется, если SQL Server не может связать объекты базы данных .NET Framework в SQL Server с новой версией сборки.
  • Подписи методов сборки, вызываемых из других сборок.
  • Список сборок, зависящих от сборки, указанный в свойстве DependentList сборки.
  • Возможность использования индексов в методе и в том числе, если только не существует индексов или постоянных вычисляемых столбцов, прямо или косвенно зависящих от этого метода.
  • Атрибут имени метода FillRow для функций CLR, возвращающих табличное значение.
  • Подпись методов Accumulate и Terminate для пользовательских статистических функций.
  • Системные сборки.
  • Владение сборкой. Вместо этого можно использовать также ALTER AUTHORIZATION (Transact-SQL).

Кроме того, для сборок, реализующих определяемые пользователем типы, с помощью инструкции ALTER ASSEMBLY можно выполнять только следующие изменения:

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

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

Если предложение ADD FILE FROM не указано, инструкция ALTER ASSEMBLY удаляет все файлы, связанные со сборкой.

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

Разрешения

Необходимо разрешение ALTER на сборку. Дополнительные требования.

  • Для изменения сборки, обладающей набором разрешений EXTERNAL_ACCESS, имя входа SQL Server должно иметь разрешение EXTERNAL ACCESS на сервере.
  • Для изменения сборки, обладающей набором разрешений UNSAFE, необходимо быть членом фиксированной серверной роли sysadmin.
  • Для изменения набора разрешений сборки на EXTERNAL_ACCESS имя входа SQL Server должно иметь разрешение EXTERNAL ACCESS ASSEMBLY на сервере.
  • Для изменения набора разрешений сборки на UNSAFE необходимо быть членом фиксированной серверной роли sysadmin.
  • Для указания предложения WITH UNCHECKED DATA необходимо быть членом фиксированной серверной роли sysadmin.

Дополнительные сведения о наборах разрешений сборки см. в разделе Конструирование сборок.

Примеры

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

На следующем примере показано, как сборка ComplexNumber обновляется до последней копии модулей .NET Framework, содержащих ее реализацию.

ms186711.note(ru-ru,SQL.90).gifПримечание.
Сборка ComplexNumber может быть создана при выполнении образцов сценариев UserDefinedDataType. Дополнительные сведения см. в разделе Образец определяемого пользователем типа данных.

ALTER ASSEMBLY ComplexNumber

FROM 'C:\Program Files\Microsoft SQL Server\90\Tools\Samples\1033\Engine\Programmability\CLR\UserDefinedDataType\CS\ComplexNumber\obj\Debug\ComplexNumber.dll'

Б. Добавление файла, связанного со сборкой

На следующем примере показано, как производится передача файла с исходным кодом Class1.cs, связанного со сборкой MyClass. При этом предполагается, что сборка MyClass уже создана в базе данных.

ALTER ASSEMBLY MyClass 
ADD FILE FROM 'C:\MyClassProject\Class1.cs';

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

На следующем примере показано, как набор разрешений сборки ComplexNumber меняется с SAFE на EXTERNAL ACCESS.

ALTER ASSEMBLY ComplexNumber WITH PERMISSION_SET = EXTERNAL_ACCESS

См. также

Справочник

CREATE ASSEMBLY (Transact-SQL)
DROP ASSEMBLY (Transact-SQL)
EVENTDATA (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

5 декабря 2005 г.

Новое содержимое:
  • Добавлено предупреждение в разделе «Примечания» об использовании инструкции ALTER ASSEMBLY без указания предложения WITH UNCHECKED DATA.
Измененное содержимое:
  • В разделе «Примечания» изменен список свойств сборки, которые можно изменить с помощью инструкции ALTER ASSEMBLY.