SAP PI 7.4至SQL 2016 JDBC连接问题

2020-08-18 09:26发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,

使用SAP PI 7.4将数据向第三方SQL Server数据库(2016)投放时出现间歇性问题。 问题是断断续续的,错误信息如下所示:

无法创建新的池化资源:DriverManagerException:无法与已注册的驱动程序建立连接。 com.microsoft.sqlserver.jdbc.SQLServerDriver返回:驱动程序无法通过使用安全套接字层(SSL)加密建立到SQL Server的安全连接。 错误:" SQL Server返回的响应不完整。连接已关闭。


我检查了似乎相关的MS Link

症状:

当反复与SQL Server建立连接时,可以观察到大约1%的连接无法连接。 用户看到以下错误消息,

错误:

驱动程序无法使用安全套接字层(SSL)加密建立与SQL Server的安全连接。 错误:" SQL Server返回的响应不完整。连接已关闭。"

背景:

由于Microsoft的一些最新更新,在使用SSL/TLS来保护连接时,客户可能会遇到与贸易伙伴的连接问题。 最近,Microsoft向Windows添加了两个新密码,它们使用不同的密钥算法。 这些密码允许的最小密钥长度是1024个字符。 如果贸易伙伴使用的密钥长度小于此长度,则SSL/TLS握手将失败。

仅当使用版本4.2以下的旧版JDBC驱动程序时,才会出现此问题。 其他驱动程序工作正常。 使用Sqlclient/ ADO.net 堆栈时,我们无法重现该问题(即使我们强制使用DHE套件)。

解决方案/解决方法:

请执行以下行动计划。

选项1

  • 将JDBC驱动程序更新为4.2或更高版本:

我们实现了一种变通方法,在SSL握手收到来自服务器的不完整响应的特定情况下,JDBC驱动程序将重试连接。

将JDBC驱动程序更新为4.2或更高版本。 里面有一个重试逻辑。 确保您在该计算机上具有受支持的JVM/JRE。

我已经检查了JDBC驱动程序版本,如果我不傻,则下面的代码显示的是目标JDBC驱动程序,即4.0。 根据博客4.2或更高版本,JDBC驱动程序将不会出现此问题。

尝试加载驱动程序类:com.microsoft.sqlserver.jdbc.SQLServerDriver
 尝试使用DriverManager.getConnection()获得连接...
 成功获得的连接对象= ConnectionID:491 ClientConnectionId:b9172a2f-d5d1-47a7-91b7-d47d98f785bc
 conn.getMetaData()。getDatabaseProductName()= Microsoft SQL Server
 conn.getMetaData()。getDatabaseProductVersion()= 13.00.5026
 conn.getMetaData()。getDriverName()=用于SQL Server的Microsoft JDBC驱动程序4.0
 conn.getMetaData()。getDriverVersion()= 4.0.4621.201
 conn.getMetaData()。getJDBCMajorVersion()= 4
 conn.getMetaData()。getJDBCMinorVersion()= 0
 正在关闭JDBC资源...
 正在关闭JDBC连接...
 封闭的JDBC资源。

但是,我的问题是PI用于连接到目标SQL实例的JDBC驱动程序-是目标还是它自己的? 哪个要升级?

如果我提出了愚蠢的问题,非常感谢您的帮助和歉意

谢谢

Mofizur

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,

使用SAP PI 7.4将数据向第三方SQL Server数据库(2016)投放时出现间歇性问题。 问题是断断续续的,错误信息如下所示:

无法创建新的池化资源:DriverManagerException:无法与已注册的驱动程序建立连接。 com.microsoft.sqlserver.jdbc.SQLServerDriver返回:驱动程序无法通过使用安全套接字层(SSL)加密建立到SQL Server的安全连接。 错误:" SQL Server返回的响应不完整。连接已关闭。


我检查了似乎相关的MS Link

症状:

当反复与SQL Server建立连接时,可以观察到大约1%的连接无法连接。 用户看到以下错误消息,

错误:

驱动程序无法使用安全套接字层(SSL)加密建立与SQL Server的安全连接。 错误:" SQL Server返回的响应不完整。连接已关闭。"

背景:

由于Microsoft的一些最新更新,在使用SSL/TLS来保护连接时,客户可能会遇到与贸易伙伴的连接问题。 最近,Microsoft向Windows添加了两个新密码,它们使用不同的密钥算法。 这些密码允许的最小密钥长度是1024个字符。 如果贸易伙伴使用的密钥长度小于此长度,则SSL/TLS握手将失败。

仅当使用版本4.2以下的旧版JDBC驱动程序时,才会出现此问题。 其他驱动程序工作正常。 使用Sqlclient/ ADO.net 堆栈时,我们无法重现该问题(即使我们强制使用DHE套件)。

解决方案/解决方法:

请执行以下行动计划。

选项1

  • 将JDBC驱动程序更新为4.2或更高版本:

我们实现了一种变通方法,在SSL握手收到来自服务器的不完整响应的特定情况下,JDBC驱动程序将重试连接。

将JDBC驱动程序更新为4.2或更高版本。 里面有一个重试逻辑。 确保您在该计算机上具有受支持的JVM/JRE。

我已经检查了JDBC驱动程序版本,如果我不傻,则下面的代码显示的是目标JDBC驱动程序,即4.0。 根据博客4.2或更高版本,JDBC驱动程序将不会出现此问题。

尝试加载驱动程序类:com.microsoft.sqlserver.jdbc.SQLServerDriver
 尝试使用DriverManager.getConnection()获得连接...
 成功获得的连接对象= ConnectionID:491 ClientConnectionId:b9172a2f-d5d1-47a7-91b7-d47d98f785bc
 conn.getMetaData()。getDatabaseProductName()= Microsoft SQL Server
 conn.getMetaData()。getDatabaseProductVersion()= 13.00.5026
 conn.getMetaData()。getDriverName()=用于SQL Server的Microsoft JDBC驱动程序4.0
 conn.getMetaData()。getDriverVersion()= 4.0.4621.201
 conn.getMetaData()。getJDBCMajorVersion()= 4
 conn.getMetaData()。getJDBCMinorVersion()= 0
 正在关闭JDBC资源...
 正在关闭JDBC连接...
 封闭的JDBC资源。

但是,我的问题是PI用于连接到目标SQL实例的JDBC驱动程序-是目标还是它自己的? 哪个要升级?

如果我提出了愚蠢的问题,非常感谢您的帮助和歉意

谢谢

Mofizur

付费偷看设置
发送
1条回答
Violet凡
1楼-- · 2020-08-18 10:01

嗨,

如果仍然需要答案,则需要按照以下说明升级驱动程序:

https://launchpad.support.sap.com/#/notes/0002513069

最诚挚的问候,

耶罗恩

一周热门 更多>