web-dev-qa-db-fra.com

Donner accès au système de fichiers au compte virtuel SQLSERVERAGENT

J'essaie d'accorder le NT Service\SQLSERVERAGENT Accès au système de fichiers du compte Windows, basé sur la réponse marquée dans cette question . Je crois que c'est un compte de service virtuel, et il n'apparaît pas dans le panneau de configuration -> comptes d'utilisateurs .

Comment donner à ce compte de service l'accès au système de fichiers? Plus précisément, sur Windows 7.

J'ai lu plusieurs approches et aucune ne semble être une option pour moi. J'ai essayé une approche PowerShell, mais les commandes AD n'étaient pas des commandes valides. J'ai même téléchargé et installé le correctif Windows requis pour ces commandes. J'ai également lu que je devrais être en mesure de le faire via SQL Server Configuration Manager ou Management Studio. Je n'arrive pas à comprendre où ajuster ces autorisations, cependant.

Le processus de l'Agent SQL Server ne démarre pas, avec le message d'erreur suivant:

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

Sur la base de ma recherche sur Google, cela a à voir avec les autorisations de ce compte.

Je ne sais pas si la base de données est corrompue, mais il indique que la base de données est dans un état normal . La connexion à l'Agent SQL Server fait partie des groupes sysadmin et public.

24
Ryan

Pour répondre spécifiquement à votre question , voici comment vous accordez des droits d'accès au disque au compte intégré de l'Agent SQL Server. Mais lisez la suite en répondant à ce que je pense être le vrai problème:

1.> Cliquez avec le bouton droit sur votre lecteur, sélectionnez les propriétés, cliquez sur le bouton Ajouter et entrez le compte SQLSERVERAGENT (assurez-vous que votre domaine n'est pas sélectionné dans la zone de texte À partir de cet emplacement, mais plutôt le nom de votre ordinateur):

enter image description here

2.> Cliquez sur le bouton Vérifier les noms pour valider la validité du compte:

enter image description here

3.> Maintenant, ajoutez l'autorisation de fichier dont vous avez besoin au compte SQLSERVERAGENT. À des fins de dépannage, vous souhaiterez peut-être donner un contrôle total, puis le redimensionner plus tard si nécessaire:

enter image description here

Cela étant dit , vous avez probablement juste besoin d'utiliser SQL Server Configuration Manger pour rajouter l'utilisateur SQL Agent - selon les commentaires que j'ai vus sur msdb et les connexions. Configuration Manager apporte plus de modifications à SQL Server qu'à l'aide de l'applet des services Windows. Par conséquent, Configuration Manager doit toujours être utilisé pour modifier TOUT service SQL.

Cela résoudra le problème si quelqu'un a modifié le compte dans les services Windows, provoquant l'échec du service au démarrage. Vous devez le réinitialiser dans Configuration Manager. Cela permet à Configuration Manager d'ajouter à SQL Server les autorisations indispensables pour gérer la base de données MSDB pour le compte de service local (NT SERVICE\SQLSERVERAGENT), contrairement à la modification des comptes dans l'applet de services Windows.

Avertissement: les versions SQL Server Express supérieures à 2000 n'incluent pas d'agent SQL. Certains aspects peuvent sembler être là, mais son inutilisable dans la version Express du produit.

Pour commencer, ouvrez le Gestionnaire de configuration SQL Server et double-cliquez sur le service SQL Server Agent dans les services SQL Server. Sélectionnez le bouton radio Compte intégré et choisissez Service local, puis cliquez sur le bouton Appliquer. Important : si vous voyez déjà que ce compte est sélectionné, choisissez un autre compte et cliquez sur le bouton Appliquer. Ensuite, redéfinissez-le sur Service local et cliquez sur le bouton Appliquer pour autoriser Configuration Manager à ajouter les autorisations MSDB correctes pour que le service SQL Agent démarre. Maintenant, redémarrez l'Agent SQL Server pour refléter ce nouveau paramètre.

enter image description here

20
Sting

J'ai résolu ce problème en définissant le compte de connexion de l'Agent SQL Server sur LocalSystem.

2
louis

Je suis d'accord frustrant .. apparemment c'est aussi simple que de simplement taper le nom. http://zarez.net/?p=3187

Résumé: tapez NT SERVICE\MSSQLSERVER, puis ne cliquez pas sur vérifier le nom, cliquez simplement sur OK et vous pouvez définir les autorisations de dossier pour le compte de l'agent SQL.

2
VJason