Eu tenho um trabalho em um servidor SQL 2008 (servidor A) (eu sei que isso não é o ideal... Esse problema está sendo resolvido). O agente é executado em NT AUTHORITY\NETWORK SERVICE.
Desejo adicionar uma etapa que executa um trabalho que fica em outro servidor SQL 2014 (servidor B).
Eu usaria:
EXEC [Server B].msdb..sp_start_job N'JobName'
Executado do Servidor A manualmente, ele executa o trabalho no Servidor B conforme o esperado.
Se eu adicionar a tarefa a um trabalho no Servidor A, ela falha com a mensagem:
Executado como usuário: NT AUTHORITY\NETWORK SERVICE. A permissão EXECUTE foi negada no objeto 'sp_start_job', banco de dados 'msdb', esquema 'dbo'. [SQLSTATE 42000] (Erro 229). A etapa falhou.
Eu atribuí NT AUTHORITY\NETWORK SERVICE no Servidor B para o 'TargetServerRole' no msdb e, em seguida, concedi a permissão Execute para se referir ao usuário para SP_Start_Job e SP_Stop_Job.
O servidor A tem o servidor B como um servidor vinculado e tentei definir "Login do servidor local para mapeamentos de login do servidor remoto" Login local NT AUTHORITY\NETWORK SERVICE para representar.
O trabalho ainda falha com o mesmo erro.
O que eu preciso fazer?
Obrigado
Você provavelmente não deseja conceder acesso direto a
sp_start_job
ousp_stop_job
, ou mesmo conceder acesso a uma variedade de funcionalidades do SQL Agent por meioSQLAgentOperatorRole
de , paraNT AUTHORITY\NETWORK SERVICE
ouMyDomain\ServerA$
. Fazer qualquer uma dessas combinações permitiria, no mínimo, que qualquer processo em execuçãoNT AUTHORITY\NETWORK SERVICE
no ServidorA pudesse iniciar e/ou interromper qualquer tarefa no ServidorB.Usando o Module Signing , você pode configurar permissões muito granulares de forma que
MyDomain\ServerA$
(ou qualquer logon ou função, ou qualquer combinação deles) possa iniciar e interromper apenas um trabalho específico.Agora tudo que você precisa fazer é:
NT AUTHORITY\NETWORK SERVICE
, é uma conta local, mas pode autenticar na rede usando a conta de computador do servidor (supondo que o servidor tenha ingressado no domínio).Você precisa criar um login no Servidor B para a conta de computador do Servidor A.
Por exemplo, se o nome do computador do Servidor A for "ServidorA", sua conta de computador será denominada "ServidorA$", algo como: