改變元件
適用於: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 (Transact-SQL) 。
變更元件的許可權集合
您也可以使用 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