Eu tenho 3 máquinas envolvidas na execução de um script SQL:
- JumpBox - Uma máquina que serve como um ponto estável para a automação ser executada.
- ReportBox - Uma máquina que contém bancos de dados e lógica de relatórios. Executando o SQL Server 2008 R2
- OLTPBox - Uma máquina que contém um banco de dados OLTP. Executando o SQL Server 2014
Como o OLTPBox é um ambiente de teste instável (ele é demolido regularmente e reconstruído), precisamos trabalhar o máximo possível fora desse contexto. Então eu tenho um script SQL (chame de InsertScript.sql
) que basicamente faz o seguinte:
INSERT INTO testresults
VALUES (SELECT * from OLTPBox.prod.dbo.results)
OLTPBox no script é um servidor vinculado.
O script acima é empacotado em uma chamada SQLCMD que é executada no JumpBox:
SQLCMD -i .\InsertScript.sql -S ReportBox -D Reporting
No entanto, quando eu executo isso, recebo o seguinte erro:
Msg 18456, Level 14, State 1, Server OLTPBox, Line 1
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
O contexto que estou executando como no JumpBox existe como um DBO para todos os bancos de dados apropriados, e todos os 3 dos servidores, por isso não sei por que está perdendo o contexto ao tentar usar o Servidor Vinculado. Todas as três máquinas estão no mesmo domínio e, na verdade, estão na mesma sub-rede (então, elas se autenticam usando o mesmo DC).
O que está acontecendo aqui, por que o contexto de login está sendo perdido?