Alter an assembly

Applies to: SQL Server

Assemblies that are registered in SQL Server can be updated from a more recent version using the ALTER ASSEMBLY statement. To update an assembly, use the ALTER ASSEMBLY statement with the following syntax:

ALTER ASSEMBLY SQLCLRTest
    FROM 'C:\MyDBApp\SQLCLRTest.dll';

ALTER ASSEMBLY doesn't disrupt currently running processes that are using the assembly; the processes continue executing with the unaltered assembly. ALTER ASSEMBLY can't be used to change the signatures of common language runtime (CLR) functions, aggregate functions, stored procedures, and triggers. You can add new public methods to the assembly, private methods can be modified in any way, and public methods can be modified as long as signatures or attributes aren't changed. Fields that are contained within a native-serialized user-defined type, including data members or base classes, can't be changed by using ALTER ASSEMBLY. All other changes are unsupported. For more information, see ALTER ASSEMBLY.

Change the permission set of an assembly

The permission set of an assembly can also be changed using the ALTER ASSEMBLY statement. The following statement changes the permission set of the SQLCLRTest assembly to EXTERNAL_ACCESS.

ALTER ASSEMBLY SQLCLRTest
    WITH PERMISSION_SET = EXTERNAL_ACCESS;

If the permission set of an assembly is being changed from SAFE to EXTERNAL_ACCESS or UNSAFE, an asymmetric key and corresponding login with EXTERNAL ACCESS ASSEMBLY permission or UNSAFE ASSEMBLY permission for the assembly must first be created. For more information, see Create an assembly.

Add the source code of an assembly

The ADD FILE clause in the ALTER ASSEMBLY syntax isn't present in CREATE ASSEMBLY. You can use it to add source code or any other files associated with an assembly. The files are copied from their original locations and stored in system tables in the database. This way, you always have source code or other files on hand should you ever need to recreate or document the current version of the user-defined type (UDT).

The following statement adds the Point.cs class source code for the Point UDT. It copies the text contained in the Point.cs file and stores it in the database under the name PointSource.

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