我正在尝试运行使用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();
hibernate.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"/>
我删除了其他配置错误,但有了这个我没有想法。如果您需要更多信息,请告诉我
提前致谢。
答案 0 :(得分:1)
SQL Server配置了Windows身份验证作为登录方法。 JDBC:SQLSERVER://本地主机;的databaseName = hibernatexml; integratedSecurity = FALSE;
如果您想使用Java应用程序中的integrated authentication with SQL Server,那么
integratedSecurity
属性设置为true
。 sqljdbc_auth.dll
安装中Microsoft SQL Server JDBC Driver
的位置应设置为java.library.path
JVM参数。
e.g。
-Djava.library.path="C:/Program Files/sqljdbc_4.0.2206.100_enu/sqljdbc_4.0/enu/auth/x64/sqljdbc_auth.dll"
答案 1 :(得分:0)
在java.library.path中放置DLL的完整路径不会起作用,至少对Java 1.7来说是如此。你必须只指定目录,没有结尾&#34; /&#34;。
例如为: (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
希望这有帮助,
何。