Comment effacer une erreur 15404 après un redémarrage de la base de données (en plus du redémarrage)

9

De temps en temps (par exemple ~ mois), un travail horaire de l'Agent SQL Server commencera à signaler une erreur 15404 et continuera à le faire jusqu'à ce qu'il intervienne.

[298] Erreur SQLServer: 15404, impossible d'obtenir des informations sur le groupe / utilisateur Windows NT 'DOMAIN_NAME \ SomeDomainAccount', code d'erreur 0x6e. [SQLSTATE 42000] (ConnIsLoginSysAdmin)

Parfois, le premier échec se produit immédiatement après un redémarrage manuel des services SQL Server Engine et SQL Server Agent. Le problème peut être résolu en redémarrant la machine.

Le propriétaire du travail est le nom répertorié dans le message d'erreur et est un administrateur SQL Server.

Le compte de service du moteur SQL Server semble être un compte de service (je pense que c'est le compte d'installation par défaut (un cran de mieux que NetworkService générique pour éviter les interférences entre les instances de moteur / agent):

   NT Service\MSSQL$INSTNAME

Ce serait une chose si le travail échouait toujours, mais comme le travail réussit après un redémarrage, cela me fait penser qu'un compte de service comme est censé fonctionner et qu'il y a un problème de synchronisation A / D ou peut-être un bogue. Lorsque le service informatique est interrogé sur la configuration A / N, la réponse est généralement «rien n'a changé».

  • Le redémarrage du moteur et des services d'agent peut entraîner l'échec du travail.
  • Un redémarrage de la machine résout le problème.
  • Un redémarrage ultérieur immédiat du moteur et de l'agent n'entraîne plus l'échec du travail.

Lien: comment résoudre une erreur SQL Server 8198

crokusek
la source
Mise à jour, cela s'est produit deux fois de plus depuis la publication.
crokusek
Probablement liés, nous avons également un problème intermittent (hebdomadaire) qui ne peut pas générer de problème SSPI sur deux serveurs différents.
crokusek
J'ajouterai simplement que je viens de recevoir cette erreur au hasard à partir d'un script SQL qui fonctionnait hier. Aucune modification du script, même machine exacte, aucune erreur évidente dans les journaux Windows. La ligne incriminée de SQL était une instruction CREATE ASSEMBLY, AUTHORIZATION [dbo], PERMISSION_SET = EXTERNAL_ACCESS;
redcalx
Plus d'informations. Le redémarrage de SQL Server n'a pas résolu le problème, mais le redémarrage de la machine l'a fait. Peut-être qu'une déconnexion / connexion l'aurait fait, car je soupçonne que c'est un problème subtil autour de mon compte de domaine. Notez que je n'ai pas changé de mot de passe récemment.
redcalx

Réponses:

4

Pas une solution, mais vous pouvez contourner le problème en faisant du propriétaire du travail un compte SQL.

Chaque fois qu'un travail est démarré, SQL Server vérifie l'identité du propriétaire du travail et vérifie qu'il est autorisé à exécuter le travail. Si le propriétaire est un compte Windows, le moteur doit interroger Active Directory. Si pour une raison qui échoue, le travail ne s'exécutera pas. Cela peut être dû au fait que le serveur AD est occupé, en panne ou coupé du réseau, ou que le compte de service SQL Server n'a pas de droits.

Puisqu'il fonctionne immédiatement après le redémarrage, cela me fait penser que cela pourrait avoir quelque chose à voir avec les informations d'identification mises en cache. Windows enregistrera les informations d'identification qu'il recherche pour une utilisation ultérieure. Ce cache est effacé au redémarrage. Peut-être que quelque chose altère le cache.

SQL Nerd
la source
Je crois que vous avez raison, il s'agit d'informations d'identification mises en cache, le redémarrage force une connexion au serveur Active Directory. J'obtiens cette erreur sur les diagrammes de base de données Lorsque je suis déconnecté du réseau de l'entreprise, je me connecte à celui-ci et aucune erreur. Déconnectez-vous et mon autorisation est perdue. Je peux interroger, créer, etc. - je ne peux tout simplement pas schématiser. Erreur 15404.
StixO
0

J'ai eu un problème avec une instance déplacée du domaine A vers le domaine B Et vérifié les autorisations partout et accordé un contrôle total partout. Compte de service modifié, propriété de l'emploi, création d'un nouvel emploi ... Rien n'a fonctionné. Trouvé le même nom de l'utilisateur du service B \ sqlservice et A \ sqlservice existant en tant que connexion sur SQL Server Après avoir supprimé la connexion A \ sqlservice, tout a commencé à fonctionner correctement. Cela signifie que certains pointeurs Windows étaient erronés

Federico
la source
Pour clarifier, vous obtenez cette erreur, et l'erreur signalée B\sqlserviceest le compte sur lequel il n'a pas pu obtenir d'informations?
RDFozz