1

我有一个到 sybase 服务器的 polybase 连接。

在我的外部表上,我无法使用 top 命令,因为 poly-base 将其转换为限制

例子:

SELECT TOP (1000) *
FROM [polygrab].[dbo].[ExtEvent_test]

无法针对链接服务器“(null)”的 OLE DB 提供程序“MSOLEDBSQL”执行查询“远程查询”。105082;通用 ODBC 错误:[SAP][ODBC 驱动程序][SQL Anywhere]第 3 行的“限制”附近的语法错误。

我也将此服务器作为链接服务器,并且通过 SAOLEDB.17 提供程序支持顶级命令。但是我不知道这是否是问题或如何改变它。

我的外部数据连接如下:

CREATE EXTERNAL DATA SOURCE [TicketMaster] WITH (
    LOCATION = N'odbc://externalserver.com:50459'
    , CONNECTION_OPTIONS = 'DRIVER={SQL Anywhere 17};
    Host=externalserver.com:50459; 
    Provider = ''SAOLEDB.17'';
    ServerName= <servername>;
    DatabaseName=<databasename>;'
    , CREDENTIAL = [PolyFriend2]
    )
4

1 回答 1

1

与一些使用 PolyBase 功能的 Microsoft 人员交谈。

创建外部数据源时,默认PUSHDOWNON. 您遇到的问题是通用 ODBC 数据源的下推功能处于早期阶段,生成的 SQL 可能不是源预期的方言。这里似乎就是这种情况。

因此,尝试使用 创建数据源PUSHDOWN = OFF,看看是否有帮助。或者,您可以使用以下选项禁用查询中的下推:OPTION (DISABLE EXTERNAL PUSHDOWN). 所以像:

SELECT TOP (1000) *
FROM [polygrab].[dbo].[ExtEvent_test]
OPTION (DISABLE EXTERNAL PUSHDOWN);

检查并查看这是否有效。

于 2020-01-25T04:15:35.280 回答