O servidor principal 'A' não pode acessar o banco de dados 'B' no contexto de segurança atual

1

Eu tenho um gatilho que acessa outro banco de dados. mas recebo um erro:

"The server principal 'A' is not able to access the database 'B' under the current security context"

Onde A é o login do usuário. Em seguida, configurei-o para executar como um usuário que, com o mesmo login, em ambos os bancos de dados (o banco de dados a partir do qual o disparador é chamado e o banco de dados referenciado no disparador). No entanto, esse erro persistir. Eu defini o banco de dados referenciado para o impulso, mas isso não funcionou.

Além disso, sa não é um usuário, mas um login, mas quando eu executo o gatilho é emitido a partir de um login sa sem qualquer representação, tudo funciona bem; mas todas as quebras quando tento representar qualquer usuário.

Como faço para que esse gatilho seja executado para todos os usuários, incluindo aqueles que não têm acesso ao meu banco de dados referenciado

    
por jpo 26.09.2014 / 17:53

1 resposta

1

Você teria que conceder acesso público a todos os itens no banco de dados referenciado que o gatilho está definido para referência, o que é uma má ideia.

Caso contrário, você precisará conceder acesso ao banco de dados referenciado e a qualquer um dos seus objetos (tabelas, visualizações, procedimentos armazenados, etc.) a qualquer login que precise usar o acionador.

Como alternativa, se o acionador estiver sendo acionado a partir de uma chamada de aplicativo, você poderá criar um login para o aplicativo, configurar as permissões adequadamente em ambos os bancos de dados para esse login e definir o aplicativo como esse usuário. Você, naturalmente, precisa cuidar de outras preocupações de segurança e registro no nível do aplicativo.

    
por 26.09.2014 / 17:56