sql-server SqlExceptionHelper(Sql异常帮助程序):具有聚集列存储索引的表不支持游标

zkure5ic  于 2022-10-31  发布在  其他
关注(0)|答案(2)|浏览(227)

我尝试从DWH SQL服务器表(使用聚簇列存储索引)通过flume将数据导入kudu。但是,在我的自定义flume源从数据库中检索一定数量的行后,出现以下异常:
SqlExceptionHelper(Sql异常帮助程序):具有聚集列存储索引的表不支持游标
我使用的是JDBC SQL Server驱动程序类型4,显然它使用游标来迭代结果集。因此,我尝试将提取大小设置为查询限制的数字,但没有任何变化。
如何阻止JDBC驱动程序使用游标,从而将所有行导入kudu表?
先谢谢你。

icomxhvb

icomxhvb1#

请尝试在连接属性中设置selectmethod=directSource
如果设置为直接(预设值),数据库服务器会在回应查询时,将完整的结果集以单一回应传送给驱动程序。如果要求的结果集类型是顺向结果集,则不会建立服务器端数据库数据指标。通常,驱动程序不会快取回应。使用此方法,驱动程序必须在提交另一个查询之前处理对查询的整个响应。如果提交了另一个查询(例如,在同一连接上使用不同的语句),则驱动程序会在提交第二个查询之前缓存对第一个查询的响应。通常,Direct方法的性能优于Cursor方法。
当然,您需要将结果集定义为FORWARD_ONLY以保证这一点。

qxgroojn

qxgroojn2#

我在使用具有列存储聚集索引的表时遇到了同样的问题。
ODBC执行的简单SELECT语句失败,原因是"具有聚集列存储索引的表不支持游标”。
我的解决方法是创建包含语句的视图:

select * from dbo.TableName

对我有用。

相关问题