Quando você alterar a TRUSTWORTHY
configuração, as conexões existentes respeitarão imediatamente essa alteração?
Eu tive uma experiência que parece sugerir que as conexões existentes não honram imediatamente a mudança, mas isso não parece certo, então eu gostaria de obter uma confirmação sobre isso para saber com o que estou lidando.
Não durante uma consulta. Quero dizer, se você estiver no SSMS com uma sessão aberta e as configurações forem alteradas, sua próxima consulta será afetada pela alteração nessa mesma sessão?
Eu não tinha certeza de qual banco de dados precisava ser TRUSTWORTHY
ativado para um processo específico, então estava testando para ver. Desliguei em um banco de dados e ainda funcionou bem. Então eu desliguei no outro banco de dados e ainda funcionou bem. No entanto, o processo não foi executado mais tarde para outro usuário, então eu imediatamente o liguei novamente em ambos os dbs. Achei estranho que o processo fosse executado com sucesso depois que eu o desliguei em ambos os bancos de dados para começar, porque tenho quase certeza de que é necessário estar ativado para um gatilho em um banco de dados poder gravar em uma tabela no outro banco de dados
Estou tentando mudar de ON
para OFF
.
As alterações na
TRUSTWORTHY
configuração são realmente perceptíveis, pelo menos entre consultas/instruções, enquanto uma sessão ainda está ativa. Uma alteração deON
to nãoOFF
afetará uma consulta em execução (uma alteração de to é irrelevante, pois a consulta nunca teria iniciado se a configuração fosse iniciada como e tal condição produz um erro), nem mesmo se tiver um que executará o "externo " expressão/objeto várias vezes. A consulta em execução pode ser concluída antes que a configuração seja verificada novamente. Eu testei os dois cenários, e o teste para o primeiro cenário (o caso mais óbvio e comum) está abaixo.OFF
ON
OFF
OUTER APPLY
Teste
Limpar
Em relação a qual banco de dados precisa ser
TRUSTWORTHY
definidoON
para evitar certos erros de permissão:TRUSTWORTHY
habilitado, se forTRUSTWORTHY
necessário. Isso é diferente do Cross-Database Ownership Chaining onde, quando não estiver habilitado para todos os bancos de dados na instância, todos os bancos de dados envolvidos na solicitação precisam estarDB_CHAINING
habilitados.Em relação à opção ideal (sem
TRUSTWORTHY
base):ALTER
o gatilho para remover aWITH EXECUTE AS...
cláusulaINSERT
na tabela que está sendo gravadaALTER
o banco de dados (A) com o gatilho para desabilitarTRUSTWORTHY