SQL连接字符串忽略指定的用户名&密码?

时间:2012-06-12 18:57:00

标签: asp.net sql entity-framework linq-to-sql connection-string

我的SQL连接字符串出现问题,而不使用连接字符串中提供的身份验证。我使用自跟踪实体编写了一个ASP.NET应用程序,我需要从两个不同的服务器访问数据。第一台服务器,SQLSERVER1正在使用Windows身份验证,并且在域上,我能够很好地提取我的数据。但是,第二个服务器连接位于域外的另一个盒子上,我需要使用特定的登录名和密码来访问数据。我确认我在连接字符串中使用的凭据可以很好地连接到服务器。

在我的网络服务器设置中,我的IIS7中的应用程序池在其自己的凭据“Domain \ AppPoolUser”下运行。

出于某种原因,每当我尝试在发布到Web服务器后从SQLSERVER2调用数据时我都会收到以下错误,即使我在连接字符串中指定了凭据并且它们是有效的。但是,如果我在本地调试应用程序,则连接正常:用户“DOMAIN \ AppPoolUser”登录失败。

似乎它没有使用我在连接字符串中指定的凭据,而是尝试连接为应用程序池凭据。如何设置连接字符串以使用我提供的凭据? 这是我的连接字符串:

<add name="ADATrackingContext" providerName="System.Data.SqlClient" connectionString="Server=SQLSERVER1;Database=ADATracking;Integrated Security=True;" />  
<add name="PatientContext" providerName="System.Data.SqlClient" connectionString="Server=SQLSERVER2;Database=Patients;uid=PatientUser;password=123456;Integrated Security=False;" />

3 个答案:

答案 0 :(得分:0)

不确定是否重要,但用户应为User Id=而不是uid=

答案 1 :(得分:0)

ADATrackingContext连接字符串将尝试使用Domain \ AppPoolUser域帐户登录,因为您已设置Integrated Security = true。由于您没有Domain \ AppPoolUser作为数据库的登录名,因此您将收到您描述的错误。

仔细检查以确保将正确的连接字符串传递给DbContext。

答案 2 :(得分:0)

看起来错误是由于我试图在我的客户端页面通过ADATracking连接字符串验证之前拉取数据。我将数据调用移到HomeConstroller.cs而不是Global.asax文件,现在一切正常。我的错误。