Question

Je travaille sur une machine locale (application ASP.NET MVC 4) mais maintenant je veux commencer à utiliser le serveur SQL de l'entreprise, je dois donc modifier la chaîne de connexion afin de me connecter à ce serveur distant.

La configuration est la suivante:

  • J'ai une connexion VPN où j'utilise une adresse IP, je ne peux pas afficher l'IP exact, disons donc - xxx.xxx.xxx.xxx
  • J'ai le nom d'utilisateur et le mot de passe afin de me connecter à VPN - vpnUsername / vpnpassword
  • Quand j'utilise Microsoft SQL Server Management Studio Pour me connecter au serveur distant, j'utilise la même IP que j'utilise pour me connecter au VPN - xxx.xxx.xxx.xxx
  • J'ai un nom d'utilisateur et un mot de passe différents pour le serveur SQL - SQLUsername / SqlPassword

J'ai une chaîne de connexion existante que j'utilise pour me connecter au serveur sur mon PC, j'ai donc pensé qu'il suffirait de changer les paramètres comme ça:

<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" />

Ainsi, les modifications de la chaîne de connexion qui fonctionne et me connecte à mon serveur local sont deux:

  1. Data Source= xxx.xxx.xxx.xxx - J'utilise l'IP. Ici, je me demande si l'IP lui-même est en sufficring. Devrais-je utiliser http://xxx.xxx.xxx.xxx Ou juste IP est OK?
  2. user id=SQLUsername;pasword=SQLPassword - J'utilise le même nom d'utilisateur et le même mot de passe que dans le même Management studio d'où je peux me connecter avec succès au serveur supprimé en fournissant le xxx.xxx.xxx.xxx comme nom de serveur et utilisant SQLUsername / SqlPassword sous SQL Server Authentincation.

Donc, pour être clair - Under Management Studio, je n'ai aucun problème à me connecter au serveur distant. Cependant, lorsque je change la chaîne de connexion en ce que j'ai publié ci-dessus dans mon HomeController où j'ai une logique très simple juste pour vérifier que l'appel à la base de données est exécuté:

private MyDbContext db = new MyDbContext();

        //
        // GET: /Home/

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

J'obtiens 3 exceptions:

  1. SQLEXception (0x80131904): l'échec de la connexion pour l'utilisateur «vpnUsername»
  2. ProvideRinCompatible Exception: le fournisseur n'a pas renvoyé de chaîne ProviderManifestToken.
  3. ProvideRinCompatibleException: une erreur s'est produite lors de l'obtention d'informations sur les fournisseurs de la base de données. Cela peut être causé par l'entité Framework à l'aide d'une chaîne de connexion incorrecte.

Donc, en plus de cela à mon avis et comme l'exception numéro 3 indique que le problème est dans la façon dont j'utilise la chaîne de connexion ce qui me concerne est aussi le Number 1 Exception qui dit que la connexion est échouée mais pas pour mon sqlusername mais pour le vpnUsername. Comme je l'ai dit - j'utilise vraiment la connexion VPN et j'utilise la même IP - xxx.xxx.xxx.xxx Pour se connecter à la fois au VPN et au SQL Server (depuis Management Studio).

aucune idée pour résoudre ça?

Était-ce utile?

La solution

Retirer Integrated Security=True à partir de votre chaîne de connexion pendant que vous essayez de vous connecter avec un nom d'utilisateur / mot de passe SQL Server

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top