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

因此,有效并将我连接到本地服务器的连接字符串的更改有两个:

  1. Data Source= xxx.xxx.xxx.xxx- 我正在使用 IP。这里我想知道IP本身是否足够。我应该使用http://xxx.xxx.xxx.xxx还是只使用 IP 可以?
  2. user id=SQLUsername;pasword=SQLPassword- 我使用的用户名和密码与Management studio我可以通过提供xxx.xxx.xxx.xxxas 服务器名称并使用 SQLUsername/SQLPassword 下的SQL 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 使用不正确的连接字符串引起的。

因此,除此之外,在我看来,第三个异常表明问题出在我使用连接字符串的方式上,我关心的还有一个Number 1异常,它表示登录失败,但不是我的 SQLUsername,而是 VPNUsername。正如我所说 - 我真的使用 VPN 连接并且我使用相同的 IP -xxx.xxx.xxx.xxx连接到 VPN 和 SQL Server(来自 Management Studio)。

知道如何解决这个问题吗?

4

1 回答 1

7

Integrated Security=True尝试使用 SQL Server 用户名/密码连接时从连接字符串中删除

于 2013-11-08T07:16:52.803 回答