消除 Integrated Security=True
尝试与SQL Server用户名/密码连接时从连接字符串中
实体框架,带有代码的第一个连接字符串到远程数据库
-
29-07-2022 - |
题
我正在使用本地计算机(ASP.NET MVC 4应用程序)工作,但是现在我想开始使用公司的SQL Server,因此我需要更改连接字符串以将我连接到该远程服务器。
设置是:
- 我有一个使用IP地址的VPN连接,无法显示确切的IP,所以假设-xxx.xxx.xxx.xxx
- 我有用户名和密码,以连接到VPN -VPNUSERNAME/VPNPASSWORD
- 当我使用时
Microsoft SQL Server Management Studio
要连接到远程服务器,我使用的IP与我使用的IP连接到VPN -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
作为服务器名称并使用sqlusername/sqlpasswordSQL Server Authentincation
.
因此,可以清楚地看到 - 在管理工作室下,我在连接到远程服务器时没有问题。但是,当我将连接字符串更改为上面发布的内容时 HomeController
在我拥有非常简单的逻辑的地方,只是检查对数据库的调用是否执行:
private MyDbContext db = new MyDbContext();
//
// GET: /Home/
public ActionResult Index()
{
return View(db.Users.ToList());
}
我有3个例外:
- sqlexception(0x80131904):用户'vpnusername'登录失败
- ProviderIncompatible Exception:提供商未返回ProvidManifestToken字符串。
- ProviderIncompatible Exception:从数据库获取提供商信息时发生了错误。这可能是由实体框架使用不正确的连接字符串引起的。
因此,除了我的看法外,正如我认为数字3的例外一样,问题在于我使用连接字符串的方式,这也是我所关心的 Number 1
例外说登录失败,但不是我的sqlusername,而是用于vpnusername。正如我所说 - 我真的在使用VPN连接,并且使用了相同的IP- xxx.xxx.xxx.xxx
连接到VPN和SQL Server(来自管理工作室)。
知道如何解决这个问题吗?
解决方案
不隶属于 StackOverflow