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


23

J'essaie d'accorder l' NT Service\SQLSERVERAGENTaccès au système de fichiers du compte Windows, en fonction de 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 -> zone des 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 cela indique que la base de données est dans un état normal . La connexion à l'Agent SQL Server fait partie des groupes sysadminet public.

Réponses:


18

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):

entrez la description de l'image ici

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

entrez la description de l'image ici

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:

entrez la description de l'image ici

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.

entrez la description de l'image ici


1
Mon compte SQL Server Agent a été défini sur NT Service\SQLAgent$MyInstanceNameet essayant de définir la sécurité sur un dossier et en appuyant sur Vérifier les noms, le nom est introuvable et ne le trouverait pas. Après beaucoup de frustration, j'ai réalisé que la valeur par défaut «À partir de cet emplacement» lorsque je appuyais sur Ajouter pour ajouter des autorisations n'était pas définie sur ma machine locale, elle était définie sur mon domaine. Le modifier sur ma machine locale (le nœud très racine dans l'arborescence) lui a permis de détecter mon NT Service\SQLAgent$MyInstanceNamecompte pour l'ajouter aux autorisations du dossier.
NibblyPig

J'ai obtenu le "MyInstanceName" dans le journal des événements qui a enregistré les erreurs.
Jasen

2

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


2
Bien qu'il s'agisse d'une solution de contournement qui peut rendre les choses opérationnelles, elle est généralement considérée comme moins sécurisée que l'utilisation de la solution suggérée dans cette réponse
RDFozz

2

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.


1
Bienvenue sur le DBA SE! Je n'ai pas voté contre. Votre réponse tombe dans la catégorie "réponse en lien uniquement". Ces réponses deviennent incompréhensibles lorsque le côté distant tombe en panne. Les relecteurs de votre message auraient dû vous le dire, c'était leur erreur. Donc: 1) votre réponse devrait en fait être une réponse (à la question en haut) 2) si vous citez quelque chose, référez-vous à une page Web, copiez-collez son plus important également dans le message. | Je vous ai donné un upvote, mais je suggère de convaincre les autres critiques.
Peterh dit de réintégrer Monica

Excellent conseil @peterh, merci d'être si utile. V Jason, j'ai ajouté le résumé de votre commentaire dans votre réponse - cela peut être suffisant mais vous voudrez peut-être revoir pour voir si vous voulez ajouter autre chose. Toutes les améliorations sont appréciées!
Jack Douglas
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.