我正在升級到 SQL Server 2019,我需要對程式集進行簽名。但是,我擁有的匯編代碼使用的是 assembly_bits / hex 位元組。我找不到簽署此程式集的好方法。如何簽署這個程式集?
以下是一個非作業示例供參考:
CREATE ASSEMBLY HelloWorld
FROM 0x4D5A900000000000
WITH PERMISSION_SET = UNSAFE;
uj5u.com熱心網友回復:
幸運的是,有一種方法不是很困難。一旦創建了程式集,您就可以就地簽署程式集。為了創建未簽名的程式集,您需要臨時啟用TRUSTWORTHY資料庫設定,稍后將禁用該設定。
步驟如下:
ALTER DATABASE [{db_name}] SET TRUSTWORTHY ON;加載一個或多個程式集:
CREATE ASSEMBLY HelloWorld FROM 0x4D5A900000000000 WITH PERMISSION_SET = UNSAFE;ALTER DATABASE [{db_name}] SET TRUSTWORTHY OFF;創建證書以簽署程式集(y|ies):
CREATE CERTIFICATE [HelloWorldAssemblies] ENCRYPTION BY PASSWORD = '{choose your own password}' WITH SUBJECT = 'Support loading HelloWorld while avoiding TRUSTWORTHY', EXPIRY_DATE = '2099-12-31';將證書(僅限公鑰)復制到
[master]資料庫:DECLARE @TempCRT NVARCHAR(MAX) = CONVERT(NVARCHAR(MAX), CERTENCODED(CERT_ID(N'HelloWorldAssemblies')), 1); EXEC (N'USE [master]; CREATE CERTIFICATE [HelloWorldAssemblies] FROM BINARY = ' @TempCRT);從證書創建登錄并授予其
UNSAFE ASSEMBLY權限:EXEC (N'USE [master]; CREATE LOGIN [HelloWorldAssemblies] FROM CERTIFICATE [HelloWorldAssemblies]; GRANT UNSAFE ASSEMBLY TO [HelloWorldAssemblies];');簽署程式集(y|ies):
ADD SIGNATURE TO ASSEMBLY::[HelloWorld] BY CERTIFICATE [HelloWorldAssemblies] WITH PASSWORD = '{choose your own password}';
我有一篇博客文章描述了這個程序,包括一個演示腳本的鏈接:
SQLCLR 與 SQL Server 2017,第 4 部分:“受信任的程式集”——失望(訊息 10314)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/488262.html
標籤:安全 组件 sql-server-2017 sqlclr sql-server-2019
