Conceder acesso ao sistema de arquivos à conta virtual SQLSERVERAGENT

23

Estou tentando conceder NT Service\SQLSERVERAGENTacesso ao sistema de arquivos da conta do Windows, com base na resposta marcada nesta pergunta . Acredito que é uma conta de serviço virtual e não aparece no painel de controle -> área de contas de usuário .

Como concedo a esta conta de serviço acesso ao sistema de arquivos? Especificamente, no Windows 7.

Eu li várias abordagens e nenhuma parece ser uma opção para mim. Tentei uma abordagem do PowerShell, mas os comandos do AD não eram válidos. Até baixei e instalei o patch do Windows necessário para esses comandos. Também li que devo fazer isso por meio do SQL Server Configuration Manager ou do Management Studio. Parece que não consigo descobrir onde ajustar essas permissões.

O processo do SQL Server Agent falha ao iniciar, com a seguinte mensagem de erro:

Login failed for user 'NT SERVICE\SQLSERVERAGENT'.  
Reason: Failed to open the explicitly specified database 'msdb'.  
[CLIENT: <local machine>]

Com base no meu Google, ele tem a ver com as permissões desta conta.

Não tenho certeza se o banco de dados está corrompido, mas ele diz que o banco de dados está no status Normal . O logon do SQL Server Agent é parte do sysadmine publicgrupos.

Ryan
fonte

Respostas:

18

Para responder especificamente à sua pergunta , veja como você concede direitos de acesso ao disco à conta interna do SQL Server Agent. Mas continue lendo enquanto respondo o que acredito ser o verdadeiro problema:

1.> Clique com o botão direito do mouse na sua unidade, selecione propriedades, clique no botão Adicionar e digite a conta SQLSERVERAGENT (verifique se o seu domínio não está selecionado na caixa de texto Deste local, mas no nome do computador):

insira a descrição da imagem aqui

2.> Clique no botão Verificar nomes para confirmar se a conta é válida:

insira a descrição da imagem aqui

3.> Agora, adicione a permissão de arquivo necessária à conta SQLSERVERAGENT. Para fins de solução de problemas, convém dar controle total e redimensioná-lo mais tarde, conforme necessário:

insira a descrição da imagem aqui

Dito isto , você provavelmente só precisará usar o SQL Server Configuration Manger para adicionar novamente o usuário do SQL Agent - de acordo com os comentários que vi sobre o msdb e os logins. O Gerenciador de Configurações faz mais alterações no SQL Server do que usando o miniaplicativo dos Serviços do Windows - portanto, o Gerenciador de Configurações sempre deve ser usado para alterar QUALQUER Serviço SQL.

Isso resolverá o problema se alguém tiver alterado a conta nos Serviços do Windows, causando falha no serviço na inicialização. Você precisa redefini-lo no Configuration Manager. Isso permite que o Gerenciador de Configurações adicione ao SQL Server as permissões necessárias para gerenciar o banco de dados MSDB da conta de Serviço Local (NT SERVICE \ SQLSERVERAGENT), enquanto a alteração de contas no miniaplicativo de serviços do Windows não.

Advertência: As versões do SQL Server Express acima de 2000 não incluem um SQL Agent. Certos aspectos podem parecer estar lá, mas são inutilizáveis ​​na versão Express do produto.

Para começar, abra o SQL Server Configuration Manager e clique duas vezes no serviço SQL Server Agent nos Serviços do SQL Server. Selecione o botão de opção Conta interna, escolha Serviço local e clique no botão Aplicar. Importante : se você já vê que esta conta está selecionada, escolha outra conta e clique no botão Aplicar. Em seguida, altere-o novamente para o Serviço local e clique no botão Aplicar para permitir que o Gerenciador de Configurações adicione as permissões corretas do MSDB para o serviço SQL Agent iniciar. Agora, reinicie o SQL Server Agent para refletir essa nova configuração.

insira a descrição da imagem aqui

Picada
fonte
1
Minha conta do SQL Server Agent foi definida como NT Service\SQLAgent$MyInstanceNamee tentando definir a segurança em uma pasta e pressionando Verificar nomes disse Nome não encontrado e não o encontrou. Depois de muita frustração, percebi que o 'From This Location' padrão, ao pressionar Adicionar para adicionar permissões, não estava definido na minha máquina local, mas no meu domínio. Mudá-lo para minha máquina local (o nó raiz da árvore) permitiu detectar minha NT Service\SQLAgent$MyInstanceNameconta e adicioná-la às permissões da pasta.
NibblyPig # 9/18
Eu obtive o "MyInstanceName" no log de eventos que registrou os erros.
21418 Jasen
2

Resolvi esse problema definindo a conta de Logon do SQL Server Agent como LocalSystem.

Louis
fonte
2
Embora esta seja uma solução que pode fazer as coisas a funcionar, é geralmente considerado menos seguro do que usar a solução sugerida nesta resposta
RDFozz
2

Concordo frustrante .. aparentemente é tão simples quanto digitar o nome. http://zarez.net/?p=3187

Resumo: Digite NT SERVICE \ MSSQLSERVER e, em seguida, não clique em verificar o nome, clique em OK e você poderá definir permissões de pasta para a conta do agente SQL.

VJason
fonte
1
Bem-vindo ao DBA SE! Eu não votei para baixo. Sua resposta se enquadra na categoria "resposta somente ao link". Essas respostas se tornam incompreensíveis quando o lado remoto fica inoperante. Os revisores de sua postagem deveriam ter dito isso a você, foi um erro deles. Portanto: 1) sua resposta deve ser realmente uma resposta (para a pergunta no topo) 2) se você estiver citando alguma coisa, consultando uma página da web, copie e cole o mais importante também no post. | Dei a você um voto positivo, mas sugiro que seja convincente para os outros revisores.
peterh diz restabelecer Monica
Excelente conselho @ Peter, obrigado por ser tão útil. V Jason, adicionei o resumo do seu comentário à sua resposta - isso pode ser suficiente, mas você pode revisar para ver se deseja adicionar mais alguma coisa. Todas as melhorias são apreciadas!
Jack Douglas