web-dev-qa-db-fra.com

Échec de la connexion. Échec de la connexion pour l'utilisateur 'NT AUTHORITY\SYSTEM'

J'ai créé un service Windows et mon service dépend du service SQL Server. Tout d'abord, SQL a démarré, puis mon service a démarré lors du démarrage ou du redémarrage de PC.

Cela fonctionne bien, mais le problème est que le fichier Windows ne peut pas lire le fichier, à l'exception de "Impossible d'ouvrir la base de données par défaut de l'utilisateur. La connexion a échoué. La connexion a échoué pour l'utilisateur 'NT AUTHORITY\SYSTEM'" lorsque j'essaie de lire la base de données. .

Si je démarre l'ordinateur et que je me connecte, il ne peut pas lire la base de données, mais si je dois démarrer l'ordinateur et attendre quelques secondes, puis me connecter au service de fenêtres, il lit la base de données.

14
user847455

Je parie que vous avez ceci dans votre chaîne de connexion:

Integrated Security=SSPI

ou quelque chose de similaire.

À présent, le compte sous lequel le service est exécuté (NT AUTHORITY\SYSTEM) tente de se connecter à la base de données - et ne peut pas, car il n’est pas autorisé à le faire.

Vous pouvez:

  • soit créer un identifiant pour NT AUTHORITY\SYSTEM dans votre serveur SQL et lui donner les autorisations nécessaires pour votre application

OU:

  • vous créez un compte d'utilisateur d'application spécifique dans SQL Server (connexion à SQL Server et utilisateur dans votre base de données) et modifiez votre chaîne de connexion en:

    User ID=(your app account);pwd=YourPassword
    
26
marc_s

Allez dans l'onglet Sécurité sous votre base de données.

Sous security, cliquez pour développer l'onglet Users.

Trouver la météo NT AUTHORITY\SYSTEM est présent.

Sinon, Faites un clic droit sur les utilisateurs , Cliquez sur nouvel utilisateur

Dans la nouvelle fenêtre utilisateur, l’onglet general change le user type en windows user .

Sélectionnez le nom d'utilisateur pour, NT AUTHORITY\SYSTEM, vous devrez le trouver dans le Advanced tab, find now, and select system.

De même pour le nom de connexion, browse and find NT AUTHORITY\SYSTEM.

Et dans l'onglet d'adhésion à gauche, sélectionnez toutes les cases requises et cliquez sur OK.

Cela réglerait probablement votre problème. J'espère que cela t'aides.

2
Prashanth Benny

En fait, je viens de modifier les autorisations de l'utilisateur NT AUTHORITY\SYSTEM dans SQL Server et cela a fonctionné pour moi.

1
Adam Levitt

vous pouvez ajouter ceci sur la chaîne de connexion

informations de sécurité persistantes = True

0
Shimith Vk