You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Alteryx中使用Postgres ODBC Driver为何产生超百次多端口连接尝试?

问题描述
  • 使用psqlodbc_15_00_0000驱动与Alteryx 23.1集成时,出现两类异常:
    1. 尽管ODBC配置已指定服务端端口54338,PostgreSQL日志却显示超100次随机客户端临时端口的连接尝试,该现象在多台机器上一致出现;但单独使用ODBC驱动(如Excel中)仅生成标准日志,无异常行为。
    2. 日志中频繁出现SQL语法错误与对象不存在错误,涉及非PostgreSQL兼容的语法(如USER()、SYSIBM.SYSDUMMY1、rdb$relations)。

连接端口异常日志示例

2024-01-17 14:31:05.378 CET [1960709] : [1-1] db=[unknown],user=[unknown],app=[unknown],client= LOG:  connection received: host= port=57126
2024-01-17 14:31:05.398 CET [1960709] : [2-1] db=,user=,app=[unknown],client= LOG:  connection authenticated: identity="CN=,OU=,DC=,DC=,DC=fr" method=ldap (9)
2024-01-17 14:31:05.398 CET [1960709] : [3-1] db=,user=,app=[unknown],client= LOG:  connection authorized: user= database=29rp1rrb
2024-01-17 14:31:05.422 CET [1960709] : [4-1] db=,user=,app=[unknown],client= LOG:  disconnection: session time: 0:00:00.044 user=_ database= host= port=57126
2024-01-17 14:31:14.944 CET [1960797] : [1-1] db=[unknown],user=[unknown],app=[unknown],client= LOG:  connection received: host= port=57198
2024-01-17 14:31:14.958 CET [1960797] : [2-1] db=,user=,app=[unknown],client= LOG:  connection authenticated: identity="CN=,OU=,DC=,DC=,DC=fr" method=ldap (9)
2024-01-17 14:31:14.958 CET [1960797] : [3-1] db=,user=,app=[unknown],client= LOG:  connection authorized: user= database=2
2024-01-17 14:31:14.980 CET [1960797] : [4-1] db=,user=,app=[unknown],client= LOG:  disconnection: session time: 0:00:00.036 user=_ database= host= port=57198

SQL错误日志示例

2024-01-17 14:06:49.598 CET [1950358] : [4-1] db=,user=zsiq_alteryx,app=PostgreSQL ODBC Driver 1.5.2.1002,client=10.208.11.222 ERROR:  syntax error at or near "(" at character 12
2024-01-17 14:06:49.598 CET [1950358] : [5-1] db=,user=zsiq_alteryx,app=PostgreSQL ODBC Driver 1.5.2.1002,client=10.208.11.222 STATEMENT:  select USER(), APPLICATION_ID() from system.iota
2024-01-17 14:06:49.599 CET [1950358] : [6-1] db=,user=zsiq_alteryx,app=PostgreSQL ODBC Driver 1.5.2.1002,client=10.208.11.222 ERROR:  syntax error at or near "(" at character 12
2024-01-17 14:06:49.599 CET [1950358] : [7-1] db=,user=zsiq_alteryx,app=PostgreSQL ODBC Driver 1.5.2.1002,client=10.208.11.222 STATEMENT:  select USER(), APPLICATION_ID() from system.iota
2024-01-17 14:06:49.605 CET [1950358] : [8-1] db=,user=zsiq_alteryx,app=PostgreSQL ODBC Driver 1.5.2.1002,client=10.208.11.222 ERROR:  relation "sysibm.sysdummy1" does not exist at character 31
2024-01-17 14:06:49.605 CET [1950358] : [9-1] db=,user=zsiq_alteryx,app=PostgreSQL ODBC Driver 1.5.2.1002,client=10.208.11.222 STATEMENT:  select USER as USER_NAME from SYSIBM.SYSDUMMY1
2024-01-17 14:06:49.605 CET [1950358] : [10-1] db=,user=zsiq_alteryx,app=PostgreSQL ODBC Driver 1.5.2.1002,client=10.208.11.222 ERROR:  relation "sysibm.sysdummy1" does not exist at character 31
2024-01-17 14:06:49.605 CET [1950358] : [11-1] db=,user=zsiq_alteryx,app=PostgreSQL ODBC Driver 1.5.2.1002,client=10.208.11.222 STATEMENT:  select USER as USER_NAME from SYSIBM.SYSDUMMY1
2024-01-17 14:06:49.611 CET [1950358] : [12-1] db=,user=zsiq_alteryx,app=PostgreSQL ODBC Driver 1.5.2.1002,client=10.208.11.222 ERROR:  relation "rdb$relations" does not exist at character 15
2024-01-17 14:06:49.611 CET [1950358] : [13-1] db=,user=zsiq_alteryx,app=PostgreSQL ODBC Driver 1.5.2.1002,client=10.208.11.222 STATEMENT:  select * from rdb$relations
解决方案

针对随机客户端端口问题

日志中显示的port=57126这类端口是客户端发起连接时使用的临时端口,并非PostgreSQL服务端监听端口,属于TCP连接的正常行为——客户端会从系统临时端口池随机选取端口发起连接,ODBC配置中指定的54338是服务端端口,两者不冲突。

  • 若日志中无连接失败记录,此现象无需处理;
  • 若需限制客户端端口范围,可通过操作系统层面配置(如Windows的netsh命令、Linux的sysctl参数)约束临时端口池。

针对SQL语法错误问题

错误日志中的SQL语句属于DB2/Informix等数据库的语法,而非PostgreSQL兼容语法,这是Alteryx默认的元数据探测逻辑导致的,可通过以下方式解决:

  1. 修改ODBC连接参数:
    • 在Alteryx的ODBC连接设置的「Advanced」标签页,添加DriverCompletion=0参数,禁用Alteryx自动执行的元数据探测语句;
    • 或在ODBC数据源管理器中,为PostgreSQL驱动添加DisablePrepare=1和UseServerSidePrepare=0参数,强制驱动使用PostgreSQL原生语法。
  2. 自定义SQL查询:
    在Alteryx输入工具中直接使用PostgreSQL兼容语句,例如用current_user替代USER(),用pg_catalog.pg_tables替代rdb$relations,避免依赖Alteryx自动生成的探测语句。
  3. 调整Alteryx数据库兼容性设置:
    进入Alteryx的「Options > User Settings > Edit User Settings > Database」,将PostgreSQL的兼容性模式设置为「PostgreSQL」,而非通用ODBC模式,减少跨数据库语法的自动生成。

内容的提问来源于stack exchange,提问作者Benoit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 07:04:52