0

我正在尝试运行一个使用 Hibernate 和 MS SQL Server Express 的 java 应用程序。

SQL Server 配置了 Windows 身份验证作为登录方法。我还启用了 TCP/IP 端口 1433(默认),但我仍然不断收到以下错误。

...// more output
at test.models.TestHibernate.main(TestHibernate.java:11)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'not required'. ClientConnectionId:de7daf69-2619-4906-b063-459a5b614bdb
...// more output

抛出异常的行:

session.beginTransaction();

休眠.cfg.xml:

<property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
        <property name="connection.url">jdbc:sqlserver://localhost;databaseName=hibernatexml;integratedSecurity=false;</property>
        <property name="connection.username">not required</property>
        <property name="connection.password"/>

我删除了其他配置错误,但是我没有想法。如果您需要更多信息,请告诉我

提前致谢。

4

2 回答 2

1

SQL Server 配置了 Windows 身份验证作为登录方法。jdbc:sqlserver://localhost;databaseName=hibernatexml;integratedSecurity=false;

如果你想在你的 java 应用程序中使用 SQL Server 的集成身份验证,那么

  • JDBC URL 应该将integratedSecurity属性设置为true.
  • sqljdbc_auth.dll安装中的位置Microsoft SQL Server JDBC Driver应设置为java.library.pathJVM 参数。例如

    -Djava.library.path="C:/Program Files/sqljdbc_4.0.2206.100_enu/sqljdbc_4.0/enu/auth/x64/sqljdbc_auth.dll"
    
于 2012-10-29T03:06:53.570 回答
0

将 DLL 的整个路径放在 java.library.path 中是行不通的,至少对于 Java 1.7 是这样。您必须只指定目录,没有结尾“/”。

例如:(1)失败...

java -cp .;"C:\Program Files\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\enu\sqljdbc4.jar"
     -Djava.library.path="C:\Program Files\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\enu\auth\x64\sqljdbc_auth.dl"
     ConnectMSSQLServer

警告:无法加载 sqljdbc_auth.dll 原因:java.library.path 中没有 sqljdbc_auth

com.microsoft.sqlserver.jdbc.SQLServerException:此驱动程序未配置为集成身份验证。

(2) 好的!

java -cp .;"C:\Program Files\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\enu\sqljdbc4.jar"
     -Djava.library.path="C:\Program Files\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\enu\auth\x64"
     ConnectMSSQLServer

希望这可以帮助,

何塞。

于 2014-06-26T14:08:45.690 回答