当前位置: 首页 > 知识库问答 >
问题:

无法将Debezium 0.9.2连接到SQL Server 2008 R2

伍光济
2023-03-14

当我在启用CDC功能后尝试将Debezium连接到SQL Server数据库时,我收到以下错误消息:

java.lang.RuntimeException: Couldn't obtain database name,
    at io.debezium.connector.sqlserver.SqlServerConnection.retrieveRealDatabaseName(SqlServerConnection.java:364),
    at io.debezium.connector.sqlserver.SqlServerConnection.<init>(SqlServerConnection.java:84),
    at io.debezium.connector.sqlserver.SqlServerConnectorTask.start(SqlServerConnectorTask.java:86),
    at io.debezium.connector.common.BaseSourceTask.start(BaseSourceTask.java:47),
    at org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:198),
    at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:175),
    at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:219),
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511),
    at java.util.concurrent.FutureTask.run(FutureTask.java:266),
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149),
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624),
    at java.lang.Thread.run(Thread.java:748),
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "SQL Server did not return a response. The connection has been closed. ClientConnectionId:bce7b974-bac3-4068-b85f-271ba41295e4".,
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2670),
    at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1837),
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2257),
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1921),
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1762),
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1077),
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:623),
    at io.debezium.jdbc.JdbcConnection.lambda$patternBasedFactory$1(JdbcConnection.java:179),
    at io.debezium.jdbc.JdbcConnection.connection(JdbcConnection.java:734),
    at io.debezium.jdbc.JdbcConnection.connection(JdbcConnection.java:729),
    at io.debezium.jdbc.JdbcConnection.queryAndMap(JdbcConnection.java:516),
    at io.debezium.jdbc.JdbcConnection.queryAndMap(JdbcConnection.java:391),
    at io.debezium.connector.sqlserver.SqlServerConnection.retrieveRealDatabaseName(SqlServerConnection.java:358),
    ... 11 more,
Caused by: java.io.IOException: SQL Server did not return a response. The connection has been closed. ClientConnectionId:bce7b974-bac3-4068-b85f-271ba41295e4,
    at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.ensureSSLPayload(IOBuffer.java:780),
    at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.readInternal(IOBuffer.java:836),
    at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.read(IOBuffer.java:827),
    at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.readInternal(IOBuffer.java:1009),
    at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.read(IOBuffer.java:997),
    at sun.security.ssl.InputRecord.readFully(InputRecord.java:465),
    at sun.security.ssl.InputRecord.read(InputRecord.java:503),
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:975),
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367),
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395),
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379),
    at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1767),
    ... 22 more,

以下是我的连接器配置:

curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" localhost:8083/connectors/ -d '{  "name": "sql-connector",  
    "config": {    
        "connector.class": "io.debezium.connector.sqlserver.SqlServerConnector",
        "database.hostname": "XXX.XXX.XXX.XXX",    
        "database.port": "1433",    
        "database.user": "login",    
        "database.password": "password",    
        "database.dbname": "BDNAME",    
        "database.server.name": "bdservername",    
        "table.whitelist": "bdSchema.TABLE",
        "database.history.kafka.bootstrap.servers": "kafka:9092",    
        "database.history.kafka.topic": "dbhistory.TABLE"  }
        }'

我在这里找到了一个解决办法:

https://github.com/Microsoft/mssql-jdbc/issues/879#issuecomment-438825486

但有可能将其应用于debezium连接器吗?Debezium是否与Sql Server 2008 R2兼容,因为在文档中它写道:

The functionality of the connector is based upon change data capture feature provided by SQL Server Standard (since SQL Server 2016 SP1) or Enterprise edition

对于信息,我使用了Debezium Docker Images 0.9.2:-debezium/zooManager-debezium/kafka-debezium/Connect

提前感谢你的帮助。

塞巴斯蒂安

共有1个答案

周伟泽
2023-03-14

当我激活TLS调试模式时,我发现了这个问题。

所以我看到Java8默认使用TLS V1.2,即使我将任何TLS选项设置为JDBC连接属性。

当我试图用Java7连接到SQLSERVER时,它起作用了。经过一些搜索,我发现这是因为Java7使用这个TLS算法:3DES_EDE_CBC。

解决方法是将值3DES_EDE_CBC删除到java中。jdk中的安全文件。tls。禁用算法键。

现在Debezium可以连接到我的Sql Server了!

别担心,我不是在生产平台上工作;-)

 类似资料:
  • 问题内容: 我已经在RHEL7上安装了ES 7.5和Kibana 7.5,但是在启动Kibana并检查UI后,我看到了错误,“ Kibana服务器尚未准备好。” 检查Kibana日志,我发现它没有正确连接到ES。任何帮助表示赞赏! 这是 journalctl –unit kibana 的输出: Elasticsearch.yml Kibana.yml 另外,当我运行 ss -tunlp | gre

  • 我已经在RHEL7上安装了ES 7.5和Kibana 7.5,但是在启动Kibana并检查UI之后,我看到了错误,“Kibana服务器还没有准备好。” 检查Kibana日志,我看到它没有正确连接到ES。感谢任何帮助! 以下是journalctl的输出——单位kibana: 弹性搜索。yml 基巴纳。yml 此外,当我在Kibana启动期间运行ss-tunlp|grep 5601时,我看到Kiban

  • 我正在尝试将MySQL数据库连接到XAMPP。每当我尝试在XAMPP上按start MySQL时,它都不会运行,我会得到一个错误: 这是因为我的病毒防护软件或VPN吗?我将如何更改MySQL和控制面板中的端口?如果有人能给我一些建议或指导我回答与此类似的已回答问题,将不胜感激。谢谢你。

  • 问题内容: 事实证明,这是对python的粗略过渡。这里发生了什么?: 输出文件如下所示: 然后我得到这个错误: 问题答案: 返回一个字节串。 在Python 3中,unicode()对象与对象之间没有隐式转换。如果您知道输出的编码,则可以使用它来获取字符串,也可以将要添加的内容转换为

  • null 错误:SQL异常:java.SQL.sqlexception:找不到适合JDBC的驱动程序:mariadb://localhost:3306/customer构建成功(总时间:3秒)

  • 我正在与亚洲开发银行和LG G6就OSX进行斗争。 > 尝试安装LG Mobile驱动程序。 尝试了MPT, PTP和其他模式没有运气 尝试启用USB连接 似乎没有什么工作,有人有同样的问题吗?? 谢谢

  • 问题内容: 香港专业教育学院一直试图与heroku合作。我可以成功地使其在开发模式下工作,但是当我尝试推送到heroku时,我得到了 然后,我阅读并关注了http://blog.redistogo.com/2010/07/26/resque-with-redis-to- go/ 我把站点中列出的配置放了,但是出现了以下错误 我把我的初始化器/ resque.rb 但是它引发了上面提到的错误。在我的

  • 我的LG G3没有出现在android studio的设备列表中。我在使用Windows 10的华硕n550jk上。 我做过的事情: USB调试模式 媒体同步(MTP) 摄像机(PTP) Android SDK Manager中的谷歌USB驱动程序 LG USB驱动程序 交换USB端口 重新启动电脑 什么都没起作用。几个月前,我在Windows 8.1上使用了它,但我不记得我做了什么。