Domanda

Sto lavorando su una macchina locale (applicazione ASP.NET MVC 4) ma ora voglio iniziare a utilizzare il server SQL dell'azienda, quindi devo modificare la stringa di connessione per collegarmi a quel server remoto.

L'impostazione è questo:

  • Ho una connessione VPN in cui utilizzo un indirizzo IP, non posso mostrare l'IP esatto, quindi diciamo - xxx.xxx.xx.xxx
  • Ho nome utente e password per connettermi a VPN - VPNUserName/VPNPassword
  • Quando uso Microsoft SQL Server Management Studio Per connettermi al server remoto utilizzo lo stesso IP che utilizzo per connettermi a VPN - XXX.XXX.XXX.XXX
  • Ho un nome utente e una password diversi per SQL Server - SQLUSERNAME/SQLPassword

Ho una stringa di connessione esistente che utilizzo per connettermi al server sul mio PC, quindi ho pensato che sarebbe stato sufficiente modificare i parametri lì in questo modo:

<add name="ProjectName.DAL.MyDbContext"
     providerName="System.Data.SqlClient"
     connectionString="Data Source=xxx.xxx.xxx.xxx;
     Initial Catalog=DatabaseName;Integrated Security=True;         
     MultipleActiveResultSets=True;
     user id=SQLUsername;password=SQLPassword;App=EntityFramework" />

Quindi le modifiche alla stringa di connessione che funziona e mi collega al mio server locale sono due:

  1. Data Source= xxx.xxx.xxx.xxx - Sto usando l'IP. Qui mi chiedo se l'IP stesso sia sufficiente. Dovrei usare http://xxx.xxx.xxx.xxx O solo IP è ok?
  2. user id=SQLUsername;pasword=SQLPassword - Sto usando lo stesso nome utente e password di Management studio da dove posso connettermi correttamente al server rimuovi fornendo il xxx.xxx.xxx.xxx come nome del server e utilizzando SQLUSERNAME/SQLPassword sotto SQL Server Authentincation.

Quindi per essere chiari - Under Management Studio non ho problemi a connettersi al server remoto. Tuttavia, quando cambio la stringa di connessione in quello che ho pubblicato sopra nel mio HomeController dove ho una logica molto semplice solo per verificare che venga eseguita la chiamata al database:

private MyDbContext db = new MyDbContext();

        //
        // GET: /Home/

        public ActionResult Index()
        {
            return View(db.Users.ToList());
        }

Ricevo 3 eccezioni:

  1. SQException (0x80131904): accesso non riuscito per l'utente 'vpnusername'
  2. ProviderInCompatibleException: il provider non ha restituito una stringa providerManifestToken.
  3. ProviderInCompatibleException: si è verificato un errore mentre si ottiene informazioni sul fornitore dal database. Questo può essere causato dal framework di entità utilizzando una stringa di connessione errata.

Quindi, oltre a me, a mio avviso e come l'eccezione numero 3 dice che il problema è nel modo in cui sto usando la stringa di connessione ciò che mi riguarda è anche il Number 1 Eccezione che dice che l'accesso è fallito ma non per il mio SQLuserName ma per il VPNUserName. Come ho detto, sto davvero usando la connessione VPN e uso lo stesso IP - xxx.xxx.xxx.xxx per collegare sia VPN che SQL Server (da Management Studio).

Hai idea di come risolverlo?

È stato utile?

Soluzione

Rimuovere Integrated Security=True Dalla stringa di connessione mentre stai cercando di connetterti con un nome utente/password del server SQL

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top