JDBC Sink Connector写入SQL Server如何指定目标数据库schema
问题根因
Confluent JDBC Sink Connector不会自动读取SQL Server数据库用户配置的默认schema,未显式指定schema前缀时,连接器会默认使用SQL Server内置的dbo作为目标schema,这就是为什么即使给testuserpts设置了默认schema为pts,连接器依然尝试访问dbo.Plant的原因。
修复方案
只需要修改现有配置中的table.name.format参数,显式带上目标schema前缀即可,不需要调整数据库用户配置,也不需要加其他额外参数。
- 将原配置里的
"table.name.format": "Plant"修改为"table.name.format": "pts.Plant"
修改后的完整可直接使用的配置如下:
"value.converter.schema.registry.url": "http://schema-registry:8081", "value.converter.schemas.enable": "true", "name": "JdbcSinkConnector", "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector", "key.converter": "org.apache.kafka.connect.storage.StringConverter", "value.converter": "io.confluent.connect.avro.AvroConverter", "topics": ["plant"], "connection.url": "jdbc:sqlserver://host.docker.internal:53954;instance=SQLEXPRESS;databaseName=InventoryManagement", "connection.user": "testuserpts", "connection.password": "testpassword", "table.name.format": "pts.Plant"
校验注意事项
配置修改重启连接器前,先确认testuserpts账号已经拥有pts.Plant表的对应写入权限:
- 仅做新增写入的话授予INSERT权限即可
- 如果开启了upsert/删除同步功能,需要额外授予UPDATE、DELETE权限
内容的提问来源于stack exchange,提问作者Senix
相关产品推荐
相关产品推荐

