2017-06-04 214 views
-2

我尝试通过调用这个类来连接到SQL服务器:登录用户'sa'失败。

class DataCon 
{ 
    public static SqlConnection Connection { get; private set; } 

    public static void connectDB(string ip, string dbName, string user, string pw) 
    { 
     string connectionSt = "Server="+ip+";Database="+dbName+";User Id="+user+";Password="+pw+";"; 
     ConnectToSql(connectionSt); 
    } 

    private static void ConnectToSql(string connectionSt) { 
     Connection = new SqlConnection(connectionSt); 
     Connection.Open(); 
    } 

    public static void connectDB(string ip, string dbName) 
    { 
     string connectionSt = "Server="+ip+";Database="+dbName+";Trusted_Connection=True;"; 
     ConnectToSql(connectionSt); 
    } 
} 

它使用Windows身份验证,但是,让用户登录失败“山”服务器身份验证时工作。

在Sql服务器管理工​​作室我可以用'sa'和Windows进行成功登录。

这是我的工作与形式:

 private void btnConfirm_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      string dbsName = "dbsStudent"; 
      string ip = "localhost"; 
      string user = txtUser.Text; 
      string pw = txtUser.Text; 

      if (cbAuthentication.SelectedIndex == 0) 
       DataCon.connectDB(ip,dbsName); 
      else 
       DataCon.connectDB(ip,dbsName,user,pw); 
      this.Hide(); 
      new ViewSt().Show(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 
+0

我根本不理解拇指。我说我可以用'sa'用户登录管理工作室,但不能用C#登录管理工作室....... – GTHell

+0

你的问题是在这个链接:https://stackoverflow.com/questions/14567939/login-failed- for-user-c-sharp-with-sqlconnection https://stackoverflow.com/questions/9636511/login-failed-for-user-sa-in-connection-string https://stackoverflow.com/questions/17016681/ login-failed-for-user-sa-at-sql-server-2008-r2 –

+0

我知道你会指出我已经阅读过的那两个问题.....这不是同一个问题,伙计 – GTHell

回答

0

如果您的密码包含特殊字符像“;”,您的连接字符串将是不正确的。

考虑使用SqlConnectionStringBuilder类构建连接字符串,如MSDN上所述。

0

也许当 连接指定假的,用户ID和密码,你应该看一看约Integrated Security

集成安全性。如果为true,则当前的Windows帐户凭据是 用于身份验证。认可的值是真实的,假的,是的,不, 和sspi(强烈推荐),这相当于真。如果指定用户 ID和密码并且集成安全性设置为真,则 用户ID和密码将被忽略,集成安全性将使用 。

所以,如果你想使用用户“sa”登录到一个数据库,你应该看看你的连接字符串中集成的安全设置为false,并尝试去解决它:)

可能如果您有任何问题,请在此留言。