Wie eine Verbindung zu sql-server mit windows-Authentifizierung aus windows-service?
Ich programmiert habe einen Windows-Dienst in C# sollte eine Verbindung zu einem SQL-Server 2005 Express-Datenbank mit System.Daten.SqlClient.
Als Microsoft lieber Windows-Authentifizierung über SQL-Authentifizierung habe ich versucht, die Verbindung zu der DB mit Vertrauenswürdigen Conenction /Integrierte Sicherheit.
Jedoch, dass nicht funktioniert, wie bekomme ich eine System.Daten.SqlClient.SqlException: Fehler bei der Anmeldung für Benutzer
"NT-AUTORITÄT\LOKALER DIENST'.
Ist es möglich, sich mit einem anderen Windows-Konto?
InformationsquelleAutor räph | 2010-02-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im moment, der Dienst scheint derzeit laufen unter der LocalService-Konto und das service-Konto ist derzeit nicht berechtigt, auf SQL.
Die situation kann behoben werden in einer von zwei Möglichkeiten: läuft das Konto unter einem Konto whichis ermächtigt, in SQL oder fügen Sie das LocalService-Konto als Anmeldekonto in SQL. Speziell:
Bearbeiten: Der erste Ansatz ist wahrscheinlich besser, weil das LocalService-Konto ist damit weltweit im system gefunden wird, dass die Gewährung von Zugang zu SQL würde aussetzen SQL und die Datenbanken zu einem bestimmten Dienst oder Treiber verwenden Sie kompromittiert werden.
Statt durch die Einführung eines speziellen Kontos hat man mehr Kontrolle über die Zugriffe SQL-Objekte und wie. Diese bringen das Problem der Konfiguration von einem solchen Konto, mit Bezug auf die Privilegien gewährt werden sollten, auf der Ebene der system (nicht SQL), und je nachdem, was die zugrunde liegenden Dienst tut, auf den kann brauchen, um dieses Konto sehr leistungsfähig, daher ist eine etwaige Haftung auf andere Weise....
Vor einer Weile hätte ich vorgeschlagen suchen in der ADSI-API, aber jetzt sollten Sie in der Lage sein zu "Chaos mit Konten, die" leicht mit dem .NET-System.ServiceProcess.ServiceController-Klasse. Obwohl ich diese für das starten/stoppen von Diensten, die habe ich nie verändert eine service-Einstellung in diesem Mode. Andere Ansätze, die ich gesehen habe, sind laichen eine net-Befehl (obwohl ich nicht glaube, Wechsel-service ist möglich) und mehr vor kurzem mit PowerShell (erlaubt das ändern von service-Eigenschaften, obwohl ich keine Erfahrung mit...).
LSA steht für Local Security Verband anerkennen, nicht LocalService. msdn.microsoft.com/en-us/library/...
LSA ist eine system-Komponente (lsass.exe), nicht ana-Kontos. Ich bearbeitet Ihre post. Zu manipulieren services programmgesteuert in C# verwendet man die ServiceController-Klasse msdn.microsoft.com/en-us/library/.... Ein bestimmtes service-Konto ist der beste Weg, um haben Sie eine ServiceInstaller-in der Montage und lassen Sie den service selbst konfigurieren appropiately: msdn.microsoft.com/en-us/library/.... Es ist ratsam, eine änderung einer Auswärtigen Dienst, nachdem Sie installiert ist, aus einer Anwendung.
GELÖST: In meinem c# - prog ich ServiceProcessInstaller.Account-BENUTZER zugeordnet und der service auf einem Windows-Benutzerkonto. Nach überwindung von stackoverflow.com/questions/790795/... es funktioniert wie gewünscht!
InformationsquelleAutor mjv
Wenn ein Windows-Dienst gestartet wird durch den Service-Control-Manager, der Prozess wird als ein bestimmter user, genau wie bei jedem anderen Prozess ausgeführt wird, auf der OS.
Gibt es eine Reihe von "built-in" Benutzerkonten, die verwendet werden, um Windows-Dienste. Sie können die vollständige Reihe von Windows-Diensten und dem Konto diese (als "Anmelden Als" in Windows 7), wenn man sich die "Dienste" den Knoten im Computer-Management".
Aus meiner Erfahrung, wenn wir wollen, einen Windows-Dienst zu sprechen, um die DB mit der integrierten Sicherheit wir nehmen den zweiten Ansatz unten:
1) teilen Sie die integrierten Konten als "Anmelden Als" - Konto, und fügen Sie dieses Konto als login auf der Instanz von SQL Server mit der entsprechenden DB-Berechtigungen
2) Nutzen/erstellen Sie ein lokales oder ein Domänenkonto für den Windows-Dienst zu verwenden, und fügen Sie dieses Konto als Anmeldekonto mit den entsprechenden DB-Berechtigungen. Es ist möglich, Sie durch das Installationsprogramm aufgefordert, die Anmeldeinformationen während der installation des Dienstes.
Ich kann nicht behaupten, Experte genug, um zu zeigen Sie alle vor-und Nachteile jeder Ansatz, allerdings ist es eine überlegung Wert, die folgenden:
mit Ansatz 1 alle Leistungen und Prozesse, die ausgeführt werden, wie die ausgewählten built-in-Konto über die Berechtigung zum Zugriff Datenbank. Dies ist nicht der Fall mit Ansatz 2.
mit Ansatz 1 der Passwort-Konfiguration verwaltet wird durch die Maschine selbst, sondern mit Ansatz 2 das Passwort verwaltet werden können durch die Administratoren und erfüllen auch alle erforderlichen Sicherheits-Richtlinien.
Ich hoffe, das hilft
InformationsquelleAutor BrianB
Wenn Sie möchten, verwenden Sie Vertrauenswürdige windows-Authentifizierung ist die einfachste Sache zu tun ist, führen Sie den Dienst mit einem Domänenkonto (mit der geringsten Privilegien die Sie erhält), ist permissioned um die sql server-Datenbank.
InformationsquelleAutor Neerav
Müssen Sie für den Zugriff auf das LOKALE Dienstkonto in SQL Express. Wie pro mein Kommentar, mein Tipp wäre einen neuen account zu erstellen, die Ihren Dienst ausführen können, unter und fügen Sie die entsprechenden Berechtigungen innerhalb von SQL Express, in anderen Worten, nicht führen Sie Ihren Dienst unter dem LOKALEN DIENST.
Jeder Dienst läuft unter diesem Konto ja. Erstellen Sie eine separate Konto, und geben Sie nur die Berechtigungen, die Sie benötigt.
InformationsquelleAutor James
Als mjv, sagte, müssen Sie entweder geben Sie die Lokale Service-Konto auf die Datenbank zugreifen oder verwenden Sie ein anderes Konto der Dienst ausgeführt wird. Sie fragte, wie können Sie das Konto ändern programmgesteuert, welches geschieht durch erstellen eines Installers für den Dienst, und ändern Sie die Konto-Eigenschaft auf "Benutzer", dann Benutzername und Passwort für den Dienst.
Den folgenden link enthält Informationen zum erstellen des Installationsprogramms wenn Sie einen Bildlauf nach unten:
http://msdn.microsoft.com/en-us/library/aa984464(VS.71).aspx
Während der folgenden bietet ein wenig mehr Details über die Konto-Eigenschaft:
http://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceprocessinstaller.account(VS.71).aspx
Hoffe, das hilft.
InformationsquelleAutor Waleed Al-Balooshi