Создание асимметричного ключа внутри SQL Server для доступа к DLL не удается

Мне нужно получить доступ к DLL (C #) из триггера SQL Server для одного из наших требований. Я скомпилировал DLL и мог загрузить его в пространстве SQL Server с помощью Create Assemblyкоманды, а затем создать для нее триггер.

Я установил, что база данных заслуживает доверия, установив TRUSTWORTHYфлаг ON.

ALTER DATABASE %DBName% SET TRUSTWORTHY ON;

Но, осознав, что это небезопасный способ сделать это, я подписал DLL с ключом ( .snkфайлом) и попытался создать асимметричный ключ, а затем создать логин на основе ключа, для которого я могу получить большой внешний доступ. Не устанавливая DB как заслуживающий доверия или если я создаю пользователя, который может получить доступ к DLL с помощью ключа, я не могу использовать DLL, потому что он выполняет доступ к файлу. Следовательно, DLL должна быть загружена с разрешения внешнего доступа. Но, выполняя нижеследующий запрос для создания асимметричного ключа, я получаю сообщение об ошибке, которое следует за запросом

USE [master];
GO

CREATE ASYMMETRIC KEY [ClrPermissionsKey]
AUTHORIZATION [dbo]
FROM EXECUTABLE FILE = 'D:TriggerTriggerManager.dll'

Сообщение об ошибке:

Msg 15208, уровень 16, состояние 1, строка 2
Сертификат, асимметричный ключ или файл закрытого ключа не существует или имеет неверный формат.

.snkФайл находится в том же пути, что и DLL. Запрос вашей помощи здесь.

Если это не правильный способ сделать это, пожалуйста, предложите.

sql-server,

2

Ответов: 0

Создание асимметричного ключа внутри SQL Server для доступа к DLL не удается

Мне нужно получить доступ к DLL (C #) из триггера SQL Server для одного из наших требований. Я скомпилировал DLL и мог загрузить его в пространстве SQL Server с помощью Create Assemblyкоманды, а затем создать для нее триггер.

Я установил, что база данных заслуживает доверия, установив TRUSTWORTHYфлаг ON.

ALTER DATABASE %DBName% SET TRUSTWORTHY ON;

Но, осознав, что это небезопасный способ сделать это, я подписал DLL с ключом ( .snkфайлом) и попытался создать асимметричный ключ, а затем создать логин на основе ключа, для которого я могу получить большой внешний доступ. Не устанавливая DB как заслуживающий доверия или если я создаю пользователя, который может получить доступ к DLL с помощью ключа, я не могу использовать DLL, потому что он выполняет доступ к файлу. Следовательно, DLL должна быть загружена с разрешения внешнего доступа. Но, выполняя нижеследующий запрос для создания асимметричного ключа, я получаю сообщение об ошибке, которое следует за запросом

USE [master];
GO

CREATE ASYMMETRIC KEY [ClrPermissionsKey]
AUTHORIZATION [dbo]
FROM EXECUTABLE FILE = 'D:TriggerTriggerManager.dll'

Сообщение об ошибке:

Msg 15208, уровень 16, состояние 1, строка 2
Сертификат, асимметричный ключ или файл закрытого ключа не существует или имеет неверный формат.

.snkФайл находится в том же пути, что и DLL. Запрос вашей помощи здесь.

Если это не правильный способ сделать это, пожалуйста, предложите.

02SQL-сервер,
Похожие вопросы