异常信息: 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");
这应该和JDBC没关系,不是JDBC层的异常,是你SQLServer的问题。参考一下:
http://www.czitc.com/service/sqlproc3.htm
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;
}}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
请问配置信息是哪方面的呢?
我可以用这个登录的啊这么设置过之后还重启过SQL的服务的
依然不行……
String sDBUrl = "jdbc:sqlserver://scu-PC\\Barney:1433;databaseName=pasdb";
你把这个改一下试试,改成:
String sDBUrl = "jdbc:sqlserver://localhost:1433;databaseName=pasdb";
String sDBUrl = "jdbc:sqlserver://scu-PC\\Barney:1433;databaseName=pasdb";
你把这个改一下试试,改成:
String sDBUrl = "jdbc:sqlserver://localhost:1433;databaseName=pasdb";
还是不行/
不过我在本机登录SQL 的时候
是不是我服务器名称的原因 呢?
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,是你计算机的名称。
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用户登录,这是哪方面的原因呢?
1. 打开1433端口2. 修改登录方式为混合登录3. 允许远程连接服务器4. 设置用户名sa的密码但是还是不行。
请问我遗漏了哪些设置吗?
1.看一下MSSQL的服务启动了没;
2.看一下端口配置正确了没;
3.看一下密码正确了没;
1. 打开1433端口2. 修改登录方式为混合登录3. 允许远程连接服务器4. 设置用户名sa的密码但是还是不行。
请问我遗漏了哪些设置吗?
1.看一下MSSQL的服务启动了没;
2.看一下端口配置正确了没;
3.看一下密码正确了没;
1. net start的结果2. 端口是配置正确的
3. 密码正确的都是1111
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即可