Eu preciso acessar uma DLL (C #) do gatilho SQL para um dos nossos requisitos. Eu compilei a DLL e poderia carregá-lo no espaço do servidor SQL usando o "Criar Assembly" e, em seguida, crie um disparador para ele.
Eu defini o banco de dados como confiável, definindo o TRUSTWORTHY
flag ON
.
ALTER DATABASE %DBName% SET TRUSTWORTHY ON;
Mas depois de perceber que esta é uma maneira insegura de fazer isso, eu assinei a DLL com uma chave ( .snk
file) e tentei criar uma chave assimétrica e então criar um login baseado na chave, para quem eu posso grande acesso externo. Seja sem definir DB como confiável ou a menos que eu crie um usuário que possa acessar a DLL usando a chave, não posso usar a DLL porque ela executa um acesso a arquivos. Portanto, a DLL precisa ser carregada com uma permissão de acesso externo. Mas ao fazer a consulta abaixo para criar a chave assimétrica, estou recebendo um erro que segue a consulta,
USE [master];
GO
CREATE ASYMMETRIC KEY [ClrPermissionsKey]
AUTHORIZATION [dbo]
FROM EXECUTABLE FILE = 'D:\Trigger\TriggerManager.dll'
"Msg 15208, Level 16, State 1, Line 2
The certificate, asymmetric key, or private key file does not exist or has invalid format."
The .snk file lies in the same path as the DLL. Requesting your help here.
If this is not the correct way of doing it, please suggest.
Tags sql-server