此驱动程序未配置集成身份验证

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

这里有一些关于我已经尝试过的信息-

编辑

现在我遇到了一件新事——在我第一次部署项目时重新启动我的电脑后它工作得很好但是当我对我的代码进行任何更改并重新 运行 项目时它是不工作!

我的问题解决了!

我得到的错误(在我上面的问题中描述)是因为 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 并通过以下方式安装:

  1. 放在应用程序库文件夹中
  2. 放入 java bin 文件夹(如果您有多个 java 安装请注意)
  3. 将库放在某个文件夹中,然后在命令行中添加路径:

    java -Djava.library.path=<library path>...
    

mssql-jdbc 驱动程序和 auth dll 应该是:

  • 在同一文件夹中(但不是强制性的)
  • 来自同一版本
  • 对于相同的架构 (x86/x64) JVM 是 运行。

另请检查下载页面上 jdbc 与 java 版本的兼容性列表。