【问题标题】:Integration Authentication Error Microsoft SQL Server 2017 and Knime集成身份验证错误 Microsoft SQL Server 2017 和 Knime
【发布时间】:2019-05-28 03:11:52
【问题描述】:

有许多关于将数据库与 Knime 集成的旧帖子,但是我没有找到任何关于 Java、Knime 和 SQL 最新版本的讨论。我花了几天时间查看这里的论坛以及 StackOverflow 和其他地方尝试使用 Knime 连接到数据库,但是没有任何效果。

我的电脑配置如下: 64位操作系统 Microsoft SQL Server 2017(64 位版本) 微软 SQL Server 管理工作室 17 适用于 SQL Server 的 Microsoft JDBC 驱动程序 7.0 KNIME 3.7.0(64 位版本) Java jre1.8.0_191

到目前为止,我已经尝试过: 将 java 版本下载到 Program Files\Java 和 Program Files (x86)\Java。目前我有存储在 Program Files 目录而不是 (x86) 目录中的 java 版本。

下载并解压“sqljdbc_7.0.0.0_enu”JDBC 7.0 驱动程序。我还尝试了 JDBC 6.0 驱动程序,但没有成功。

将 sqljdbc_auth.dll 放在 C\Program Files\Java\jre1.8.0_191\bin 和 C\Program Files\Java\jre1.8.0_191\lib 目录下。

在 Microsoft SQL Server Management Studio 中启用 TCP/IP 端口

将 Knime 的数据库连接器、数据库读取器和 Microsoft SQL Server 连接器节点配置为以下设置: 数据库驱动程序:com.microsoft.sqlserver.jdbc.SQLServerDriver 数据库 URL:jdbc:sqlserver://(localhost);综合安全=真; 身份验证:选中“使用凭据”(对于数据库读取器,此功能被屏蔽)

当我执行数据库连接器节点时,我收到以下错误: 错误数据库连接器 0:2 执行失败:无法创建与数据库的连接:java.library.path 中没有 sqljdbc_auth

当我执行数据库读取器节点时,我收到以下错误: 错误数据库读取器 0:1 执行失败:此驱动程序未配置为集成身份验证。 ClientConnectionId:4906d2f3-e3df-4016-a383-29840cb4dee2

当我执行 Microsoft SQL Server 连接器时,我收到以下错误: 错误 Microsoft SQL Server 连接器 0:5 执行失败:无法创建与数据库的连接:java.library.path 中没有 sqljdbc_auth

【问题讨论】:

  • Windows PATH 上的文件夹中是否有 sqljdbc_auth.dll? JDBC 驱动程序需要能够找到 DLL,以便它可以使用集成身份验证。

标签: java sql-server jdbc knime


【解决方案1】:

seems 需要一个额外的设置步骤来进行集成身份验证设置。我假设您正在使用带有 64 位 JVM 的 KNIME,因此您应该将 C:\Microsoft JDBC Driver 6.4 for SQL Server\sqljdbc_<version>\enu\auth\x64\sqljdbc_auth.dll 复制到 C:\Windows\System32 文件夹或将以下行添加到 knime.ini(在 -vmargs 行之后的某个位置):

-Djava.library.path=C:\Microsoft JDBC Driver 6.4 for SQL Server\sqljdbc_<version>\enu\auth\x64

(我认为&lt;version&gt; 应该适合您为 KNIME 设置的 JDBC 驱动程序。路径可能还需要进一步调整。)

我认为第二个选项是首选,因此您可以使用不同的 JDBC 驱动程序,但它需要对 knime.ini 进行调整以进行所有安装。

【讨论】:

    【解决方案2】:

    Microsoft 的 JDBC 驱动程序似乎更喜欢 sqljdbc_auth.dll 在 Windows PATH 上可见,以使其可用于与 SQL Server 实例的可信连接(Windows 身份验证)。确保 DLL 位于 PATH 上的文件夹中。

    【讨论】:

      【解决方案3】:

      经过多次试验和错误,以下是我如何通过 Windows 身份验证解决 KNIME JDBC 连接到 MS SQLExpress 的问题。我使用的是 KNIME 附带的用于 Microsoft SQL Server 的 jTDS。

      选择 Microsoft SQL Server 连接器节点并使用以下设置配置节点:

      • a) 主机名 = localhost(如果远程运行,则替换为远程服务器的主机名或 IP)

      • b) 端口 = 1433(默认 SQLserver 端口)

      • c) 数据库名称 = PracticeDB(替换为您希望连接的数据库名称)

      • d) 身份验证:无/本地身份验证

      • 在 Microsoft SQL Server 连接器的 JDBC 参数选项卡中,添加以下内容: NameintegratedSecuritytrue

        的布尔值

      KNIME Microsoft SQL Server 连接器将生成必要的 JDBC 连接字符串:

      数据库类型:Microsoft SQL Server 连接:URL="jdbc:jtds:sqlserver://localhost:1433/PracticeDB" 驱动程序:jTDS for Microsoft SQL Server(ID=jTDS for Microsoft SQL Server, Version=1.3 .0)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-22
        相关资源
        最近更新 更多