2016-07-18 8 views
6

Beim Öffnen einer SQL-Verbindung zu einer lokalen Datenbank in einer herkömmlichen Konsolenanwendung habe ich keine Probleme, wenn ich versuche, dieselbe Funktion innerhalb eines zustandslosen Dienstes auszuführen In Service Fabric erhalte ich einen Login-Fehler.Verbindung mit lokaler SQL Server-Instanz bei der Ausführung von Service Fabric-Cluster in der Entwicklungsumgebung

Der Fehler, den ich erhalten ist "Login failed for user 'WORKGROUP\\NICK$'."

Und das ist der Code, den ich

using (var con = new SqlConnection("Server=.;Trusted_Connection=True;Database=AddressBook")) 
{ 
      try 
      { 
       con.Open(); 
      } 
      catch (Exception e) 
      { 

      } 
} 

verbinden bin mit Wenn ich versuche, dass Benutzer auf SQL Server hinzuzufügen, es sagt mir, dass der Benutzer kann nicht sein gefunden.

+0

Wie geben Sie Benutzerkredite an? Sind Sie auf den Benutzer angewiesen, unter dem der Prozess ausgeführt wird? Wenn dies der Fall ist, funktioniert dies in einer Konsolenanwendung, die wie Sie ausgeführt wird. In Service Fabric wird der Prozess jedoch standardmäßig unter dem Netzwerkdienstkonto ausgeführt. –

+0

@VaclavTurecek Ja, ich habe mich auf den Benutzer verlassen, unter dem der Prozess lief. Ich habe einen neuen Benutzer in SQL Server eingerichtet und ein Passwort dafür angegeben. Ich änderte meine Verbindungszeichenfolge zu dem folgenden ohne Glück. Muss der Server auch geändert werden? 'Server =. Benutzer-ID = Fabric; Kennwort = mypassword; Database = AddressBook' –

Antwort

14

Basierend auf den obigen Kommentaren erfuhr ich, dass Service Fabric unter dem NETZWERKDIENST-Konto ausgeführt wird.

Die Lösung besteht darin, die Benutzerzuordnung und die Rollenmitgliedschaft für die Datenbanken zu aktualisieren, auf die Sie im SF-Cluster zugreifen möchten.

In SSMS erweitern Sicherheit, Logins, rechts klicken Sie auf NETWORK SERVICE und wählen Sie dann Eigenschaften. Setzen Sie unter Benutzerzuordnung ein Kontrollkästchen neben jeder Datenbank, für die Sie Zugriff auf und unter public, db_datareader/writer freigeben möchten.

enter image description here

+2

Alternativ können Sie Ihren Dienst so konfigurieren, dass er als ein anderes Benutzerkonto mit Zugriff auf Ihre Datenbank ausgeführt wird: https://azure.microsoft.com/ de-de/dokumentation/artikel/service-fabric-application-runas-sicherheit/# apply-runaspolicy-to-services –