com.microsoft.sqlserver.jdbc.SQLServerException:用户登录失败

时间:2016-10-31 20:04:34

标签: java sql-server jdbc

我正在尝试将我的java程序连接到我通过VPN远程访问的SQLServer数据库,此数据库使用Windows身份验证。我在Netbeans的库文件夹中有sqljdbc4.jar,也是源包选项卡中的jar文件(不知道为什么会这样)。我认为这个问题与VPN有关,因为我非常确定所使用的所有凭据。

    String url = "jdbc:sqlserver://AAAHCSQL01:1433;databaseName=netForumAAAHCDev;";
    try{
       conn = DriverManager.getConnection(url,userName,password);

    }catch(SQLException e){
        e.printStackTrace();

    }

这是错误:

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'MBisesi_AAAHC'. ClientConnectionId:92c25c9c-506b-4c77-88c3-819fc0774883
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(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at namedropper.NameDropper.main(NameDropper.java:23)

1 个答案:

答案 0 :(得分:0)

我使用VPN并且此jdbc驱动程序具有相同的错误。唯一的区别是我在混合身份验证模式下运行SQL Server。我可以说两件事:

  1. 您可能需要将instanceName添加到连接字符串中(参见下文)。
  2. 尝试使用jtds,它是我唯一可以开始工作的驱动程序(注意我的例子假设是hibernate)。
  3. WORKS

    <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
    <property name="hibernate.connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:jtds:sqlserver://****:1433;instance=***;DatabaseName=***;</property>
    <property name="hibernate.connection.username”>***</property>
    <property name="hibernate.connection.password”>***</property>
    

    不工作

    <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
    <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
    <property name="hibernate.connection.url">jdbc:sqlserver://****:1433;instanceName=***;DatabaseName=***</property>
    <property name="hibernate.connection.username”>***</property>
    <property name="hibernate.connection.password”>***</property>
    

    修改

    • 注意:将SQL Server 2008 R2升级到SP3不会启用MS驱动程序。此外,this链接可能有所帮助。