解决方案 »

  1.   

    用户 'sa' 登录失败。 
    这应该和JDBC没关系,不是JDBC层的异常,是你SQLServer的问题。参考一下:
    http://www.czitc.com/service/sqlproc3.htm
      

  2.   

    异常信息:
    com.microsoft.sqlserver.jdbc.SQLServerException: 用户 'sa' 登录失败。 ClientConnectionId:97ec273b-fa28-4b36-ac8c-3280ca75ce8f
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
    at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:254)
    at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:84)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2908)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at try_2_JDBC.DBHelper.GetConn(DBHelper.java:17)
    at try_2_JDBC.DBHelper.GetConn(DBHelper.java:29)
    at try_2_JDBC.DBHelper.TestConn(DBHelper.java:47)
    at TALK.main(TALK.java:7)
    用户 'sa' 登录失败。 ClientConnectionId:97ec273b-fa28-4b36-ac8c-3280ca75ce8f
    conn bad!
    连接失败1
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    import try_2_JDBC.DBHelper; 
    public class TALK {
    public static void main(String[] args) {
    DBHelper help=new DBHelper();
    if(help.TestConn())
    System.out.println("连接成功1");
    else
    System.out.println("连接失败1");


    }
    }~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    package try_2_JDBC;import java.sql.*;public class DBHelper {
    Connection _CONN = null;

    //取得连接
    private boolean GetConn(String sUser, String sPwd) {
    if(_CONN!=null)return true;
    try {
    String sDriverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

    String sDBUrl = "jdbc:sqlserver://scu-PC\\Barney:1433;databaseName=pasdb"; Class.forName(sDriverName);
    _CONN = DriverManager.getConnection(sDBUrl, sUser, sPwd); } catch (Exception ex) {
    ex.printStackTrace();
    System.out.println(ex.getMessage());
    return false;
    }
    return true;
    }

    private boolean GetConn()
    {
    return GetConn("sa","1111");
    }

    //关闭连接
    private void CloseConn()
    {
    try {
    _CONN.close();
    _CONN = null;
    } catch (Exception ex) {
    System.out.println(ex.getMessage());
    _CONN=null;
    }
    }
     

    //测试连接
    public boolean TestConn() {
    if (!GetConn())
    {
    System.out.println("conn bad!");
    return false;
    }else{
    System.out.println("conn good!");
    }
    CloseConn();
    return true;
    }}
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    请问配置信息是哪方面的呢?
      

  3.   

    你应该设置的是用windows用户身份登录的了,改为sql和windows都能登录的。
      

  4.   


    我可以用这个登录的啊这么设置过之后还重启过SQL的服务的
    依然不行……
      

  5.   

    谢谢您的回答,但是貌似我都试过了还是不行
    String sDBUrl = "jdbc:sqlserver://scu-PC\\Barney:1433;databaseName=pasdb";
    你把这个改一下试试,改成:
    String sDBUrl = "jdbc:sqlserver://localhost:1433;databaseName=pasdb";
      

  6.   

    谢谢您的回答,但是貌似我都试过了还是不行
    String sDBUrl = "jdbc:sqlserver://scu-PC\\Barney:1433;databaseName=pasdb";
    你把这个改一下试试,改成:
    String sDBUrl = "jdbc:sqlserver://localhost:1433;databaseName=pasdb";
    还是不行/
    不过我在本机登录SQL 的时候
    是不是我服务器名称的原因 呢?
      

  7.   

    谢谢您的回答,但是貌似我都试过了还是不行
    String sDBUrl = "jdbc:sqlserver://scu-PC\\Barney:1433;databaseName=pasdb";
    你把这个改一下试试,改成:
    String sDBUrl = "jdbc:sqlserver://localhost:1433;databaseName=pasdb";
    还是不行/
    不过我在本机登录SQL 的时候
    是不是我服务器名称的原因 呢?
    你这里要设置你的本机,不是localhost,只用在url改就行了,你url写的那个scu-PC\\Barney应该是不对的,url是ip+端口号。你这里的服务器名称应该就是scu-PC,是你计算机的名称。
      

  8.   

    请问一下,如下程序
    public class myjdbc {
    public static void main(String[] args) {
    String sDriverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; 
    String Name = "sa";
    String Pswd = "";
    String aDBUrl = "jdbc:sqlserver://localhost:1433;databaseName=pasdb";
    //String bDBUrl = "jdbc:sqlserver://scu-PC\\Barney;databaseName=pasdb;integratedSecurity=true";
    try {
    Class.forName(sDriverName);
    DriverManager.getConnection(aDBUrl,Name,Pswd);
    //DriverManager.getConnection(bDBUrl);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    } catch (SQLException ex) {
    ex.printStackTrace();
    } }
    }
    使用bDBUrl的时候是可以连接成功的,但是A的时候还是不行。但是使用SQL SERVER management studio却可以使用这个sa用户登录,这是哪方面的原因呢?
      

  9.   

    我做了如下修改:
    1. 打开1433端口2. 修改登录方式为混合登录3. 允许远程连接服务器4. 设置用户名sa的密码但是还是不行。
    请问我遗漏了哪些设置吗?
    1.看一下MSSQL的服务启动了没;
    2.看一下端口配置正确了没;
    3.看一下密码正确了没;
      

  10.   

    我做了如下修改:
    1. 打开1433端口2. 修改登录方式为混合登录3. 允许远程连接服务器4. 设置用户名sa的密码但是还是不行。
    请问我遗漏了哪些设置吗?
    1.看一下MSSQL的服务启动了没;
    2.看一下端口配置正确了没;
    3.看一下密码正确了没;
    1. net start的结果2. 端口是配置正确的
    3. 密码正确的都是1111
      

  11.   

    谢谢大家的支持,问题解决!!
    import java.sql.*;public class myjdbc {
    public static void main(String[] args) {
    String sDriverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; 
    String Name = "sup";
    String Pswd = "1111";
    String aDBUrl = "jdbc:sqlserver://scu-PC\\Barney;databaseName=pasdb";
    //String bDBUrl = "jdbc:sqlserver://scu-PC\\Barney;databaseName=pasdb;integratedSecurity=true";
    try {
    Class.forName(sDriverName);
    DriverManager.getConnection(aDBUrl,Name,Pswd);
    //DriverManager.getConnection(bDBUrl);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    } catch (SQLException ex) {
    ex.printStackTrace();
    } }
    }
    问题就出在aDBUrl 后面的服务器名称上面了。因为SQL2008不允许Localhost登陆,只可以用机器名\实例名的方式登陆,所以改成scu-PC\\Barney即可