改變元件
適用於:SQL Server
在 SQL Server 中註冊的元件可以使用 ALTER ASSEMBLY
語句,從較新版本更新。 若要更新元件,請使用具有下列語法的 ALTER ASSEMBLY
語句:
ALTER ASSEMBLY SQLCLRTest
FROM 'C:\MyDBApp\SQLCLRTest.dll';
ALTER ASSEMBLY
不會中斷目前使用元件的執行中進程;進程會繼續以未轉換的元件執行。
ALTER ASSEMBLY
無法用來變更 Common Language Runtime (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;