此驱动程序未配置集成身份验证
This driver is not configured for integrated authentication
正在尝试使用 sqljdbc41
for jdk 1.8
将我的 java 网络应用程序连接到 MS-SQL 服务器。这里是数据库连接代码-
Connection connection;
String url = "jdbc:sqlserver://localhost:1433;databaseName=Lista;integratedSecurity=true";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
connection = DriverManager.getConnection(url);
当我尝试向数据库中插入一些值时-
PreparedStatement ps = connection.prepareStatement("INSERT INTO user_informations VALUES(?,?,?)");
ps.setString(1, "value");
ps.setString(2, "value");
ps.setString(3, "value");
ps.executeUpdate();
每次都报以下错误-
com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not
configured for integrated authentication
这里有一些关于我已经尝试过的信息-
- 我已经在路径变量中添加了
sqljdbc41
的路径。
- 我已经在路径变量中添加了
sqljdbc_auth.dll
的路径。
- 我已将
sqljdbc41.jar
添加到我的 Nebeans
项目库中。
- 我已将
sqljdbc_auth.dll
添加到 jdk
和 jre
下的两个 bin 文件夹中。
- 我的
jdk
是 64 bit
在程序文件文件夹下,而不是在程序文件 (x86) 中。
- jdbc驱动文件夹也在程序文件目录下
- sql服务器和sql服务器浏览器服务也是运行ning.
编辑
现在我遇到了一件新事——在我第一次部署项目时重新启动我的电脑后它工作得很好但是当我对我的代码进行任何更改并重新 运行 项目时它是不工作!
我的问题解决了!
我得到的错误(在我上面的问题中描述)是因为 glassfish
服务器没有对 sqljdbc42.jar
文件的任何访问权限。所以我已将 sqljdbc42.jar
文件放入我的 glassfish
服务器中的这个位置 -
glassfish-4.1\glassfish\domains\domain1\lib
现在一切正常。
谢谢大家!
我的问题是有 2 个 java 安装,其中一个是标准安装,它是 64 位的,另一个包含在我的 oracle jdeveoper 安装中(它是应用程序给出该错误)并且令人惊讶的是它是 32 位的。
我只是将正确的 dll 放入我的应用程序使用的 java 安装中,一切顺利
sqljdbc_auth.dll
需要使用windows认证或Kerberos认证。
从 Microsoft 获取 dll 并通过以下方式安装:
- 放在应用程序库文件夹中
- 放入 java bin 文件夹(如果您有多个 java 安装请注意)
将库放在某个文件夹中,然后在命令行中添加路径:
java -Djava.library.path=<library path>...
mssql-jdbc 驱动程序和 auth dll 应该是:
- 在同一文件夹中(但不是强制性的)
- 来自同一版本
- 对于相同的架构 (x86/x64) JVM 是 运行。
另请检查下载页面上 jdbc 与 java 版本的兼容性列表。
正在尝试使用 sqljdbc41
for jdk 1.8
将我的 java 网络应用程序连接到 MS-SQL 服务器。这里是数据库连接代码-
Connection connection;
String url = "jdbc:sqlserver://localhost:1433;databaseName=Lista;integratedSecurity=true";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
connection = DriverManager.getConnection(url);
当我尝试向数据库中插入一些值时-
PreparedStatement ps = connection.prepareStatement("INSERT INTO user_informations VALUES(?,?,?)");
ps.setString(1, "value");
ps.setString(2, "value");
ps.setString(3, "value");
ps.executeUpdate();
每次都报以下错误-
com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication
这里有一些关于我已经尝试过的信息-
- 我已经在路径变量中添加了
sqljdbc41
的路径。 - 我已经在路径变量中添加了
sqljdbc_auth.dll
的路径。 - 我已将
sqljdbc41.jar
添加到我的Nebeans
项目库中。 - 我已将
sqljdbc_auth.dll
添加到jdk
和jre
下的两个 bin 文件夹中。 - 我的
jdk
是64 bit
在程序文件文件夹下,而不是在程序文件 (x86) 中。 - jdbc驱动文件夹也在程序文件目录下
- sql服务器和sql服务器浏览器服务也是运行ning.
编辑
现在我遇到了一件新事——在我第一次部署项目时重新启动我的电脑后它工作得很好但是当我对我的代码进行任何更改并重新 运行 项目时它是不工作!
我的问题解决了!
我得到的错误(在我上面的问题中描述)是因为 glassfish
服务器没有对 sqljdbc42.jar
文件的任何访问权限。所以我已将 sqljdbc42.jar
文件放入我的 glassfish
服务器中的这个位置 -
glassfish-4.1\glassfish\domains\domain1\lib
现在一切正常。
谢谢大家!
我的问题是有 2 个 java 安装,其中一个是标准安装,它是 64 位的,另一个包含在我的 oracle jdeveoper 安装中(它是应用程序给出该错误)并且令人惊讶的是它是 32 位的。 我只是将正确的 dll 放入我的应用程序使用的 java 安装中,一切顺利
sqljdbc_auth.dll
需要使用windows认证或Kerberos认证。
从 Microsoft 获取 dll 并通过以下方式安装:
- 放在应用程序库文件夹中
- 放入 java bin 文件夹(如果您有多个 java 安装请注意)
将库放在某个文件夹中,然后在命令行中添加路径:
java -Djava.library.path=<library path>...
mssql-jdbc 驱动程序和 auth dll 应该是:
- 在同一文件夹中(但不是强制性的)
- 来自同一版本
- 对于相同的架构 (x86/x64) JVM 是 运行。
另请检查下载页面上 jdbc 与 java 版本的兼容性列表。