Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Can';t将Debezium 0.9.2连接到SQL Server 2008 R2_Sql Server_Apache Kafka_Apache Kafka Connect_Debezium - Fatal编程技术网

Sql server Can';t将Debezium 0.9.2连接到SQL Server 2008 R2

Sql server Can';t将Debezium 0.9.2连接到SQL Server 2008 R2,sql-server,apache-kafka,apache-kafka-connect,debezium,Sql Server,Apache Kafka,Apache Kafka Connect,Debezium,当我尝试在启用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.connect

当我尝试在启用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,
我在这里找到了一个解决方法:

但有可能将其应用于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/动物园管理员 -德贝齐姆/卡夫卡 -解压/连接

提前感谢你的帮助


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

因此,我看到Java8默认使用TLSV1.2,即使我在JDBC连接属性中设置了任何TLS选项

当我尝试用Java7连接到SQLServer时,它成功了。 经过一些搜索,我发现这是因为Java7使用了这个TLS算法:3DES\U EDE\U CBC

解决方法是将值
3DES\u EDE\u CBC
删除到
jdk.tls.disabledAlgorithms
键中的java.security文件中

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


别担心,我不是在使用生产平台;-)

您好,Debezium从未使用SQL Server 2008进行过测试。我建议您尝试
authentication
JDBC连接属性中的
NotSpecified
值,因为它应该绕过SSL并验证Debezium是否有效。只有在这之后,在安全层上工作才有意义。感谢您的响应,但是我如何将authentication=NotSpecified设置到JDBC连接中呢?我尝试将“database.authentication”:“NotSpecified”和“database.history.authentication”:“NotSpecified”放入连接器配置中,但我得到了相同的结果=>原因是:com.microsoft.sqlserver.jdbc.SQLServerException:驱动程序无法使用安全套接字层(SSL)加密建立到SQL Server的安全连接。错误:“SQL Server未返回响应。连接已关闭
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