更改程序集
适用范围:SQL Server
可以使用 ALTER ASSEMBLY
语句从较新版本更新在 SQL Server 中注册的程序集。 若要更新程序集,请使用具有以下语法的 ALTER ASSEMBLY
语句:
ALTER ASSEMBLY SQLCLRTest
FROM 'C:\MyDBApp\SQLCLRTest.dll';
ALTER ASSEMBLY
不会中断正在使用程序集的当前正在运行的进程;进程继续执行未更改的程序集。
ALTER ASSEMBLY
不能用于更改公共语言运行时 (CLR) 函数、聚合函数、存储过程和触发器的签名。 你可以向程序集添加新的公共方法,可以以任何方式修改私有方法,只要签名或属性未更改,就可以修改公共方法。 使用 ALTER ASSEMBLY
无法更改本机序列化用户定义类型中包含的字段,包括数据成员或基类。 不支持所有其他更改。 有关详细信息,请参阅 ALTER ASSEMBLY。
更改程序集的权限集
还可以使用 ALTER ASSEMBLY
语句更改程序集的权限集。 以下语句将 SQLCLRTest
程序集的权限集更改为 EXTERNAL_ACCESS
。
ALTER ASSEMBLY SQLCLRTest
WITH PERMISSION_SET = EXTERNAL_ACCESS;
如果将程序集的权限集从 SAFE
更改为 EXTERNAL_ACCESS
或 UNSAFE
,则必须首先创建具有 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;