【问题标题】:SqlExceptionHelper: Cursors are not supported on a table which has a clustered columnstore indexSqlExceptionHelper:具有聚集列存储索引的表不支持游标
【发布时间】:2016-02-15 13:51:19
【问题描述】:

我正在尝试将使用聚集列存储索引的 DWH SQL 服务器表中的数据导入到kuduflume。但是,在我的自定义flume源从数据库中检索到一定数量的行后,就会出现这个异常:

SqlExceptionHelper:具有聚集列存储索引的表不支持游标

我正在使用 JDBC SQL Server 驱动程序类型 4,显然它使用游标来迭代结果集。因此,我尝试将 fetch size 设置为查询限制的数量,但没有任何改变。

如何阻止 JDBC 驱动程序使用游标,从而将所有行导入到 kudu 表中?

提前致谢。

【问题讨论】:

    标签: java sql-server jdbc clustered-index


    【解决方案1】:

    尝试在连接属性中设置selectmethod=directSource:

    如果设置为直接(默认),数据库服务器在响应查询时将完整的结果集在单个响应中发送给驱动程序。 如果请求的结果集类型是只进结果集,则不会创建服务器端数据库游标。通常,驱动程序不会缓存响应。使用此方法,驱动程序必须在提交另一个查询之前处理对查询的整个响应。如果提交了另一个查询(例如,在同一连接上使用不同的语句),驱动程序会在提交第二个查询之前缓存对第一个查询的响应。通常,Direct 方法的性能优于 Cursor 方法。

    当然,您需要将结果集定义为FORWARD_ONLY 以保证这一点。

    【讨论】:

    • 非常感谢!做到了。
    猜你喜欢
    • 2017-12-02
    • 2020-09-15
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多