Мне нужно получить доступ к 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. Запрос вашей помощи здесь.
Если это не правильный способ сделать это, пожалуйста, предложите.
Мне нужно получить доступ к 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-сервер,