2016-07-18 96 views
6

Quando si apre una connessione sql a un database locale in un'app console tradizionale non ho problemi, tuttavia quando tento di fare la stessa cosa all'interno di un servizio stateless in esecuzione in Service Fabric ottengo un errore di accesso.Connessione all'istanza di SQL Server locale quando si esegue il cluster di Service Fabric nell'ambiente di sviluppo

L'errore che ricevo è "Login failed for user 'WORKGROUP\\NICK$'."

E questo è il codice che sto usando per collegare

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

      } 
} 

Quando provo ad aggiungere l'utente al server sql mi dice che l'utente non può essere trovato.

+0

Come si specificano i crediti utente? Ti stai affidando all'utente in cui è in esecuzione il processo? In tal caso, funzionerà in un'app console che viene eseguita automaticamente, ma in Service Fabric il processo viene eseguito per impostazione predefinita nell'account del servizio di rete. –

+0

@VaclavTurecek Sì, mi stavo affidando all'utente in cui il processo era in esecuzione. Ho configurato un nuovo utente in SQL Server e specificato una password per esso. Ho cambiato la mia stringa di connessione alla seguente senza fortuna. Anche il server deve cambiare? 'Server = .; Id utente = Fabric; Password = mypassword; Database = AddressBook' –

risposta

14

In base ai commenti sopra, ho appreso che Service Fabric è in esecuzione con l'account SERVIZIO DI RETE.

La soluzione è aggiornare la mappatura utente e l'appartenenza ai ruoli per i database a cui si desidera accedere all'interno del cluster SF.

In SSMS espandere Sicurezza, Login, fare clic con il tasto destro del mouse su SERVIZIO DI RETE e quindi selezionare Proprietà. In Mappatura utente, posizionare una casella di controllo accanto a ciascun database che si desidera esporre all'accesso e in basso a public, db_datareader/writer.

enter image description here

+2

In alternativa, è possibile configurare il servizio in modo che venga eseguito come un altro account utente che ha accesso al DB: https://azure.microsoft.com/ it-it/documentazione/articoli/servizi-tessuto-Application-runas-security/# applicare-runaspolicy-to-servizi –