更改程序集

可以使用 ALTER ASSEMBLY 语句从较新版本更新已在 SQL Server 中注册的程序集。 若要更新程序集,请使用具有以下语法的 ALTER ASSEMBLY 语句:

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

ALTER ASSEMBLY 不会中断正在使用程序集的当前正在运行的进程;进程继续执行未更改的程序集。 ALTER ASSEMBLY 不能用于更改公共语言运行时 (CLR) 函数、聚合函数、存储过程和触发器的签名。 可以将新的公共方法添加到程序集,可以以任何方式修改私有方法,只要签名或属性未更改,就可以修改公共方法。 不能使用 ALTER ASSEMBLY 更改本机序列化用户定义类型中包含的字段,包括数据成员或基类。 不支持所有其他更改。 有关详细信息,请参阅 ALTER ASSEMBLY (Transact-SQL)

更改程序集的权限集

还可以使用 ALTER ASSEMBLY 语句更改程序集的权限集。 以下语句将 SQLCLRTest 程序集的权限集更改为 EXTERNAL_ACCESS

ALTER ASSEMBLY SQLCLRTest  
WITH PERMISSION_SET = EXTERNAL_ACCESS   

如果将程序集的权限集从 SAFE 更改为 EXTERNAL_ACCESSUNSAFE,则必须首先创建具有 EXTERNAL ACCESS ASSEMBLY 权限或 UNSAFE ASSEMBLY 权限的非对称密钥和相应登录名。 有关详细信息,请参阅 “创建程序集”。

添加程序集的源代码

ALTER ASSEMBLY 语法中的 ADD FILE 子句在 CREATE ASSEMBLY 中不存在。 您可以使用该子句来添加源代码或与程序集关联的任何其他文件。 这些文件将从其原始位置复制并存储到数据库的系统表中。 如果您需要重新创建或记录 UDT 的当前版本,这样可确保源代码或其他文件随时备用。

以下语句为 Point UDT 添加Point.cs类源代码。 这会复制Point.cs文件中包含的文本,并将其存储在名为“PointSource”的数据库中。

ALTER ASSEMBLY Point

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

另请参阅

管理 CLR 集成程序集
创建程序集
删除程序集
ALTER ASSEMBLY (Transact-SQL)