5

ローカル マシン (ASP.NET MVC 4 アプリケーション) で作業していますが、会社の SQL サーバーの使用を開始したいので、そのリモート サーバーに接続するために接続文字列を変更する必要があります。

セットアップは次のとおりです。

  • IP アドレスを使用する VPN 接続がありますが、正確な IP を表示できないため、たとえば、xxx.xxx.xxx.xxx とします。
  • VPN に接続するためのユーザー名とパスワードがあります - VPNUsername/VPNPassword
  • Microsoft SQL Server Management Studioリモートサーバーへの接続に使用するときは、VPN への接続に使用するのと同じ IP を使用します - xxx.xxx.xxx.xxx
  • SQL Server のユーザー名とパスワードが異なります - SQLUsername/SQLPassword

PCのサーバーに接続するために使用する既存の接続文字列があるため、次のようにパラメーターを変更するだけで十分だと思いました。

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

したがって、機能してローカル サーバーに接続する接続文字列からの変更点は 2 つあります。

  1. Data Source= xxx.xxx.xxx.xxx- IP を使用しています。ここで、IP 自体で十分かどうかを確認します。http://xxx.xxx.xxx.xxxを使用する必要がありますか、それとも IP だけで問題ありませんか?
  2. user id=SQLUsername;pasword=SQLPassword-サーバー名として を指定し、 の下で SQLUsername/SQLPassword を使用Management studioすることにより、削除サーバーに正常に接続できる場所と同じユーザー名とパスワードを使用しています。xxx.xxx.xxx.xxxSQL Server Authentincation

明確にするために-Management Studioでは、リモートサーバーへの接続に問題はありません。ただし、接続文字列を上記のHomeController場所に投稿したものに変更すると、データベースへの呼び出しが実行されていることを確認するための非常に単純なロジックがあります。

private MyDbContext db = new MyDbContext();

        //
        // GET: /Home/

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

3 つの例外があります。

  1. SqlException (0x80131904): ユーザー 'VPNUsername' のログインに失敗しました
  2. ProviderIncompatibleException: プロバイダーは ProviderManifestToken 文字列を返しませんでした。
  3. ProviderIncompatibleException: データベースからプロバイダー情報を取得中にエラーが発生しました。これは、不適切な接続文字列を使用する Entity Framework が原因である可能性があります。

それに加えて、私の意見では、3番目の例外は、接続文字列の使用方法に問題があることをNumber 1示しているため、ログインに失敗したが、SQLUsernameではなくVPNUsernameであるという例外もあります。私が言ったように - 私は実際に VPN 接続を使用しており、同じ IP を使用xxx.xxx.xxx.xxxして、VPN と SQL Server (Management Studio から) の両方に接続しています。

これを解決する方法はありますか?

4

1 に答える 1

7

SQL Server のユーザー名/パスワードで接続しようとしているときに、接続文字列から削除Integrated Security=Trueします

于 2013-11-08T07:16:52.803 に答える