集成身份验证错误Microsoft SQL Server 2017和Knime



有很多关于将数据库与Knime集成的旧帖子,但我没有发现任何关于Java、Knime和SQL最新版本的讨论。我花了几天时间在这里、StackOverflow和其他地方查看论坛,试图用Knime连接到数据库,但什么都没用。

我的计算机配置如下:64位操作系统Microsoft SQL Server 2017(64位版本)Microsoft SQL Server Management Studio 17用于SQL Server的Microsoft JDBC驱动程序7.0KNIME 3.7.0(64位版本)Java jre1.8.0_191

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

下载并解压缩"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 \jre11.8.0_191\lib目录中。

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

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

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

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

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

集成身份验证设置似乎需要额外的设置步骤。我假设您使用的是带有64位JVM的KNIME,所以您应该将C:Microsoft JDBC Driver 6.4 for SQL Serversqljdbc_<version>enuauthx64sqljdbc_auth.dll复制到C:WindowsSystem32文件夹中,或者在KNIME.ini中添加以下行(在-vmargs行之后的某个位置):

-Djava.library.path=C:Microsoft JDBC Driver 6.4 for SQL Serversqljdbc_<version>enuauthx64

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

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

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

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

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

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

  • b) 端口=1433(默认SQL服务器端口)

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

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

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

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

数据库类型:Microsoft SQL Server连接:URL="jdbc:jtds:sqlserver://localhost:1433/PracticeDB"驱动程序:用于Microsoft SQL Server的jTDS(ID=用于Microsoft SQL服务器的jTDS,版本=1.3.0)

最新更新