我正在使用本地计算机(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
as 服务器名称并使用 SQLUsername/SQLPassword 下的SQL Server Authentincation
.
所以要清楚 - 在 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)。
知道如何解决这个问题吗?