Comment se connecter à sql-server avec l'authentification Windows de windows-service?
J'ai programmé un Service Windows en C# qui doit se connecter à SQL-Server 2005 Express de la Base de données avec le Système.Les données.SqlClient.
Que Microsoft préfère utiliser l'Authentification Windows via l'Authentification SQL, j'ai essayé de vous connecter à la DB avec Confiance Conenction /Sécurité Intégrée.
Cependant cela ne fonctionne pas comme je l'ai d'avoir un Système.Les données.SqlClient.SqlException: échec de la Connexion de l'utilisateur
'AUTORITE NT\SERVICE LOCAL'.
Est-il possible de se connecter avec un autre Compte Windows?
source d'informationauteur räph | 2010-02-11
Vous devez vous connecter pour publier un commentaire.
Pour le moment, le service semble actuellement s'exécuter sous le Compte LocalService et ce compte de service n'est actuellement pas autorisé sur SQL.
La situation peut être fixé de deux façons: en cours d'exécution le compte sous un compte qui est autorisé dans SQL ou ajouter le compte LocalService comme une connexion à SQL. Plus précisément:
Modifier: La première approche est probablement préférable, parce que le compte LocalService est donc omniprésente dans le système que l'octroi de l'accès à SQL exposerait SQL et les bases de données, un service ou un pilote à l'aide de devenir compromise.
Au lieu par l'introduction d'un compte spécifique on a plus de contrôle sur l'accès à SQL objets et comment. Bien sûr, cela soulever la question de la configuration d'un tel compte, en ce qui concerne les privilèges devrait être accordée, au niveau du système (pas de SQL), et selon ce que le Service sous-jacent n'est peut-être besoin pour faire de ce compte plutôt puissant, d'où une responsabilité potentielle par d'autres moyens....
Lorsqu'un Service Windows est démarré par le Gestionnaire de Contrôle de Service, le processus s'exécute en tant qu'utilisateur spécifique, tout comme avec tout autre processus en cours d'exécution sur le système d'exploitation.
Il y a un certain nombre de "built-in" comptes d'utilisateurs qui sont utilisés pour l'exécution des Services Windows. Vous pouvez voir l'ensemble complet des Services de Windows et le compte exécuter en tant qu' (appelé "ouvrir une session" dans Windows 7) si vous regardez les "Services" nœud de Gestion de l'Ordinateur".
De mon expérience, lorsque nous voulons un Service Windows pour parler de la DB à l'aide de la sécurité intégrée de nous prendre la deuxième approche ci-dessous:
1) Affecter les comptes intégrés comme le "ouvrir une session en tant Que" compte et d'ajouter ce compte comme un compte de connexion sur l'instance de SQL Server avec le DB autorisations
2) Utiliser/créer un local ou un compte de domaine pour le Service Windows à utiliser, puis ajoutez ce compte comme une connexion avec le DB autorisations. C'est possible grâce au programme d'installation pour demander les informations de compte d'utilisateur lors de l'installation du service.
Je ne peux pas prétendre être expert pour remarquer tous les avantages et les inconvénients de chaque approche, cependant, il est utile de considérer les éléments suivants:
avec l'approche 1 tous les services et les processus qui s'exécutent d'une sélection de compte intégré sera autorisé à accéder à votre base de données. Ce n'est pas le cas avec l'approche 2.
avec l'approche 1 le mot de passe de configuration est gérée par la machine elle-même mais avec l'approche 2 le mot de passe peut être gérée par les administrateurs et aussi se conformer aux politiques de sécurité en place.
J'espère que cette aide
Si vous souhaitez utiliser de confiance de l'authentification windows, la meilleure chose à faire est d'exécuter le service avec un compte de domaine (avec le moins de privilleges requis) autorisées à la base de données sql server.
Vous avez besoin pour accorder l'accès au compte de SERVICE LOCAL dans SQL Express. Comme pour mon commentaire, mon conseil serait de créer un nouveau compte de votre service peut fonctionner sous l', puis ajouter le les autorisations pertinentes à l'intérieur de SQL Express, en d'autres termes, ne pas exécuter votre service en vertu de SERVICE LOCAL.
Que les véhicules à immatriculation multilatérale dit, vous avez besoin de donner de Compte de Service Local d'accès à la base de données ou utiliser un compte différent pour exécuter le service. Vous avez demandé comment vous pouvez modifier le compte de la programmation, qui est accompli par la création d'un programme d'installation pour le service et la modification de la propriété Compte "Utilisateur" puis en spécifiant le nom d'utilisateur et le Mot de passe pour exécuter le service.
Le lien suivant contient des informations sur la création du programme d'installation si vous faites défiler vers le bas:
http://msdn.microsoft.com/en-us/library/aa984464(SV.71).aspx
Tandis que le suivant fournit un peu plus de détail sur le Compte de la propriété:
http://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceprocessinstaller.account(VS.71).aspx
Espère que cette aide.