2015-08-28 65 views
0

我有一个连接字符串中的App.config像这样:C#的WinForms不接受连接字符串的用户资料

<add name="connectionString" 
     connectionString="Data Source=SERVER;Initial Catalog=DB;Integrated Security=True;User ID=domain\username;Password=12345;Connection Timeout=300" 
     providerName="System.Data.SqlClient" /> 

我然后调用代码后面的字符串,像这样:

string conSTR = System.Configuration.ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString; 
       SqlDataReader reader; 
       using (SqlConnection sqlConn = new SqlConnection(conSTR)) 
       using (SqlCommand cmd = new SqlCommand(SQLQuery, sqlConn)) 
       { 
        sqlConn.Open(); 
        reader = cmd.ExecuteReader(); 
        while (reader.Read()) 
        { 
        .... stuff happens here 
        } 
       } 

我的地方帐户无权访问服务器,但传递到连接字符串的服务帐户不会。

我得到的错误是:

Cannot open database "DB" requested by the login. The login failed. 

Login failed for user 'domain\MyUserName'. 

出于某种原因,它完全无视在连接字符串中的用户名/密码,并尝试使用我的帐户连接。

我该如何解决这个问题?

回答

4

您在连接字符串中集成了security = true,请将其删除。

+0

有时候简单的事情......但现在我得到的服务帐户“登录失败的用户域\\帐户”。“',即使密码是正确的。是否期望SQL登录,而不是Windows身份验证? –

+0

是的,我认为是这样,http://www.connectionstrings.com/sql-server/可以帮助你 – Jay

+1

是的,你可以使用集成的安全性作为当前的Windows用户或SQL登录如果你想使用一个替代域名您必须使用模拟功能 – shf301

0

这是因为你指定Integrated Security=True;。这否决了任何其他身份验证设置,将其删除,它将使用提供的用户名和密码。