Cenário:
Estou tentando entender uma situação estranha. Eu tenho um SQL Server 2012 com o mecanismo de banco de dados e o agente do SQL Server configurados usando a mesma conta de domínio. Essa conta de domínio não é adicionada aos logons do SQL Server. Verificado usando xp_logininfo 'Domain account', 'all'
e não obteve nenhuma saída. Eu tenho um trabalho de servidor SQL que atualiza uma tabela em um banco de dados. Esse trabalho está funcionando bem. Até agora, eu tinha a impressão de que a conta do agente do SQL Server deve ser definida no logon do SQL Server para executar o trabalho. No entanto, nesse caso, o trabalho estava funcionando bem, embora o logon do agente do SQL Server não esteja definido nos logons do SQL Server. Então, tentando entender como isso é possível. Além disso, como o trabalho atualiza uma tabela, não sabe qual usuário/login ele usa para atualizar a tabela. Como teste, alterei o proprietário do trabalho para login 'sa' e não 'sa' em ambos os casos em que o trabalho está funcionando bem.
Então minhas perguntas são:
É obrigatório ter uma conta de agente do SQL Server definida nos logons do SQL Server para executar o trabalho? Se sim, como é que meu trabalho de atualização está sendo executado, mesmo que não haja logon presente para a conta do agente do SQL Server nos logons do SQL Server. Se não, como funciona internamente? Como qual conta ele usa para iniciar o trabalho SQL.
Qual usuário/login meu trabalho de atualização está usando para atualizar a tabela?
1. É obrigatório ter uma conta de agente do SQL Server definida nos logons do SQL Server para executar o trabalho?
Veja isso e isso .
O SQL Server Agent é executado como um serviço do Windows chamado NT SERVICE\SQLSERVERAGENT. O logon NT SERVICE\SQLSERVERAGENT é como o processo do Windows que é o SQL Server Agent se conecta ao Mecanismo de Banco de Dados para ler o banco de dados msdb e descobrir o que ele deve fazer; e então faça. Esses dois logons são membros da função de servidor fixa sysadmin, portanto, podem fazer qualquer coisa no Mecanismo de Banco de Dados. E eles precisam ficar assim.
Quanto à conta que você usou para executar os serviços, isso é complicado e mudou em cada versão do SQL Server. A resposta curta é que a conta que você especificar será usada quando um processo tentar acessar fora do ambiente Windows atual. Mas dentro do computador, há uma mistura de autorização concedida ao usuário do domínio, ao serviço e ao grupo do Windows SQLServerMSSQLUser$computername$MSSQLSERVER.
Existem permissões no sistema operacional que uma conta de agente obtém por padrão. Detalhes aqui .
De acordo com os livros online:
Mas não deve ser um membro do grupo de administração local.
2. Qual usuário/login meu trabalho de atualização está usando para atualizar a tabela?
Referência: https://www.simple-talk.com/sql/database-administration/setting-up-your-sql-server-agent-correctly/
A propriedade do trabalho é um conceito importante no SQL Server Agent. O SQL Server Agent define o contexto de segurança para a execução do trabalho com base na função do usuário que possui o trabalho. Por padrão, o SQL Server Agent executa etapas de trabalho na conta de serviço do SQL Server Agent independentemente da propriedade do trabalho ou no contexto de uma conta proxy.
A exceção a essa regra são as etapas de trabalho T-SQL, que são executadas no contexto de segurança do proprietário do trabalho. Se o proprietário do trabalho for membro da função sysadmin, a etapa do trabalho será executada no contexto da conta de serviço do SQL Server Agent.
A conta de inicialização do serviço define a conta do Microsoft Windows na qual o SQL Server Agent é executado e suas permissões de rede. O SQL Server Agent é executado como uma conta de usuário especificada. Você seleciona uma conta para o serviço SQL Server Agent usando o SQL Server Configuration Manager, onde você pode escolher entre as seguintes opções:
Conta incorporada. Você pode escolher em uma lista das seguintes contas de serviço internas do Windows: Conta do sistema local. O nome desta conta é NT AUTHORITY\System. É uma conta poderosa que tem acesso irrestrito a todos os recursos do sistema local. Ele é membro do grupo Administradores do Windows no computador local e, portanto, é membro da função de servidor fixa sysadmin do SQL Server.
Esta conta Permite especificar a conta de domínio do Windows na qual o serviço SQL Server Agent é executado. Recomendamos escolher uma conta de usuário do Windows que não seja membro do grupo Administradores do Windows. No entanto, há limitações para usar a administração multiservidor quando a conta de serviço do SQL Server Agent não for membro do grupo Administradores local.
Nota: - A opção de conta do sistema local é fornecida apenas para compatibilidade com versões anteriores. A conta do sistema local tem permissões que o SQL Server Agent não requer. Evite executar o SQL Server Agent como a conta do sistema local. Para maior segurança, use uma conta de domínio do Windows com as permissões listadas na seção a seguir, "Permissões de conta de domínio do Windows".
Conecte a instância do SQL Server usando o estúdio de gerenciamento Clique com o botão direito do mouse na instância e selecione
Obtemos um relatório de alterações de esquema para todos os bancos de dados dos quais podemos obter a conta de usuário que foi usada para excluir/descartar o banco de dados.
Se você quiser saber mais sobre as informações da tabela sobre exclusão/atualização, então não há documentação
fn_dump_dblog
, você pode conferir aqui .Para mais informações aqui e aqui