在 Invantive 中使用分布式查询时选择不同的 Exact Online 部门 SQL

Choose different division of Exact Online when using distributed query with Invantive SQL

我有一组使用 Invantive SQL 分布式选项的 SQL 语句,从 Exact Online 中提取已发货的货物信息,并在 Freshdesk 中为每个已发货的序列号与消费者一起创建一张票据作为联系人。

这在使用一个登录代码连接到 Exact Online 和 Freshdesk 时工作正常。但是,最终用户使用不同的登录代码。在这种情况下,SQL 语句集从 Exact Online 中的测试部门而不是正确的生产部门检索数据。

当不使用分布式选项时,我可以使用以下方法更改除法:

use 123123

其中 123123 是 Exact Online 国家/地区的唯一部门编号。

同时连接到 Exact Online 和 Freshdesk 时,我得到:

itgenuse002: List of partitions could not be determined.

我如何强制为特定的 Exact Online 部门执行 SQL 语句集,而不是当时为登录代码执行的默认语句集?

显示问题的示例 SQL 查询:

create or replace table fulladdress@inmemorystorage --STAP 1.
as 
select acad.id
,      acad.name
,      acad.phone
,      acad.email
,      acad.addressline1 || '   ' || acad.postcode || '   ' || acad.city fulladdress
from   ExactonlineREST..Accounts@eolnl acad 
where  acad.status = 'C'

从您的代码看来,您的连接中似乎有多个数据容器 运行。在用户界面中,您只能在默认数据容器上设置分区。

但是,有一个简单的代码解决方案可供使用。您必须知道要为其设置分区的数据容器的别名。在 use 调用中使用该别名(在此示例中 123123 是您要选择的分区):

use 123123@eolnl

或使用所有可用分区:

use all@eolnl

显示的 use 语句适用于只有一个数据容器的数据库。那样的话,只有一个数据容器可以处理问题,一切都顺利进行。

在 Invantive SQL 中使用分布式查询,您需要指示 use 语句使用哪个数据容器。否则,第一个数据容器将尝试处理它(在这种情况下可能是没有分区概念的 Freshdesk)。这类似于将数据容器别名附加到每个表,如:

select ...
from   table@eolnl
join   table2@freshdesk
on     ...

此处 eolnlfreshdesk 指定应查找表的位置。

因此,在这种情况下使用:

use 123123@eolnl

set 语句也是如此。