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.
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:
NT AUTHORITY\SYSTEM
dans votre serveur SQL et lui donner les autorisations nécessaires pour votre applicationOU:
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
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.
En fait, je viens de modifier les autorisations de l'utilisateur NT AUTHORITY\SYSTEM dans SQL Server et cela a fonctionné pour moi.
vous pouvez ajouter ceci sur la chaîne de connexion
informations de sécurité persistantes = True