【发布时间】:2013-11-20 02:17:51
【问题描述】:
我正在使用本地计算机(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" />
因此,有效并将我连接到本地服务器的连接字符串的更改有两个:
-
Data Source= xxx.xxx.xxx.xxx- 我正在使用 IP。这里我想知道IP本身是否足够。我应该使用http://xxx.xxx.xxx.xxx 还是只使用 IP 可以? -
user id=SQLUsername;pasword=SQLPassword- 我使用与Management studio中相同的用户名和密码,通过提供xxx.xxx.xxx.xxx作为服务器名称并在SQL Server Authentincation下使用SQLUsername/SQLPassword,我可以成功连接到删除服务器。李>
所以要清楚 - 在 Management Studio 下,我连接到远程服务器没有问题。但是,当我将连接字符串更改为上面在HomeController 中发布的内容时,我有非常简单的逻辑来检查对数据库的调用是否已执行:
private MyDbContext db = new MyDbContext();
//
// GET: /Home/
public ActionResult Index()
{
return View(db.Users.ToList());
}
我得到 3 个例外:
- SqlException (0x80131904):用户“VPNUsername”登录失败
- ProviderIncompatibleException:提供程序未返回 ProviderManifestToken 字符串。
- ProviderIncompatibleException:从数据库获取提供程序信息时出错。这可能是由于 Entity Framework 使用了不正确的连接字符串造成的。
因此,除此之外,在我看来,第三个异常表明问题出在我使用连接字符串的方式上,我担心的还有 Number 1 异常,它表示登录失败但不是我的SQLUsername 但用于 VPNUsername。正如我所说 - 我真的在使用 VPN 连接,并且我使用相同的 IP - xxx.xxx.xxx.xxx 来连接到 VPN 和 SQL Server(来自 Management Studio)。
知道如何解决这个问题吗?
【问题讨论】:
-
你的连接字符串还有
Integrated Security=True;如果它仍然存在,请删除它 -
是的,我删除了它,现在我可以建立连接了。虽然我不确定这是什么安全问题。不过,如果你愿意 - 让它成为一个答案,这就行了。
标签: entity-framework-5 connection-string vpn