Tôi đang cố gắng add an assembly vào cơ sở dữ liệu trong SQL2008 bằng cách sử dụng asymmetric key.tạo khóa không đối xứng qua mạng
Chúng tôi đang thêm lắp ráp bằng cách sử dụng một chuỗi hex (thêm cụm máy chủ thông qua chỉ truy vấn sql)
USE [master]
GO
IF NOT EXISTS (SELECT * from sys.asymmetric_keys where name = 'ManagedAsymmetricKey')
BEGIN
CREATE ASYMMETRIC KEY ManagedAsymmetricKey FROM FILE = 'C:\Managed.dll'
CREATE LOGIN CLRLogin FROM ASYMMETRIC KEY ManagedAsymmetricKey
GRANT UNSAFE ASSEMBLY TO CLRLogin
END
GO
USE [$dbName]
GO
CREATE ASSEMBLY [Managed]
AUTHORIZATION [dbo]
FROM 0x4D5A....
WITH PERMISSION_SET = UNSAFE
GO
này sẽ làm việc trên một trường hợp địa phương tuy nhiên qua mạng chúng tôi nhận được; The certificate, asymmetric key, or private key file does not exist or has invalid format.
Tôi có thể giả định sai rằng tôi nên thêm khóa trước, tôi có nên thêm bản lắp ráp sau đó thực hiện điều gì đó dọc theo các dòng CREATE ASYMMETRIC KEY ManagedAsymmetricKey FROM ASSEMBLY [workingDB].[dbo].[Managed]
không?
Đối với lắp ráp tạm thời, bạn không cần phải thiết lập 'PERMISSION_SET' cho 'UNSAFE', bởi vì bạn không cần phải thực thi mã từ lắp ráp để tạo ra chìa khóa. Điều đó cũng có nghĩa là bạn không phải đặt 'TRUSTWORTHY' ở bất kỳ đâu. Bên cạnh đó, cảm ơn cho các thông minh hack! –
Tôi đặt không an toàn vì việc lắp ráp trong câu hỏi là không an toàn. nếu bạn có một hội đồng an toàn thì điều này thực sự không cần thiết. –
Tôi không phải là 100% về điều này, nhưng tôi không nghĩ rằng hội đồng là vốn (un) an toàn. Assembly của tôi chứa mã chỉ chạy với quyền 'UNSAFE', nhưng SQL Server không phàn nàn khi tôi tạo assembly với' PERMISSION_SET = SAFE'. –