共用方式為


改變元件

適用於: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_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;