Openquery 挂在同一行号

Openquery Hung at Same Row Number

我正在尝试通过链接服务器在 SQL 服务器 17 中执行 运行 到 Oracle 连接源的开放查询。当我 运行 下面发布的查询每次都卡在 行 7833 处。

查询:

SELECT 
    sys_ohi, 
    "Region", 
    sub_acct_no_ohi, 
    serv_cde_ohi, 
    connect_dte_ohi, 
    charge_amt_ohi 

FROM openquery (MyServer, ' 
(SELECT DISTINCT 
    sys_ohi, 
CASE 
    WHEN prin_ohi = ''1000'' THEN ''Seattle East'' 
    WHEN prin_ohi = ''1500'' THEN ''Seattle West'' 
    WHEN prin_ohi = ''2000'' THEN ''Oregon'' 
    WHEN prin_ohi = ''3000'' THEN ''Sacramento''
    WHEN prin_ohi = ''3500'' THEN ''San Francisco'' 
        END AS "Region", 
    sub_acct_no_ohi, 
    serv_cde_ohi, 
    connect_dte_ohi, 
    charge_amt_ohi 

FROM mytable_ohi

WHERE serv_cde_ohi IN (''INSTALL'')
AND connect_dte_ohi > trunc(to_date(''06-01-2017'',''MM-DD-YYYY'')))')

我有 36 个不同的 serv_cde_ohi IN (''INSTALL'') 但我已经为不同的场景创建了 36 个 UNION ALL 查询,因为试图将它们放在 'IN' 语句中对性能来说很糟糕。

我需要知道为什么这个查询卡在同一个地方。

您的 UNION ALL 声明可能依赖于隐式数据转换才能开始执行,然后在游标提取期间出现数据条件,其中隐式转换以您观察到的这种方式失败。

消除所有隐式依赖。对于每个 SELECT 中的每个项目,明确建立数据类型(每个项目的类型相同,当然是按顺序)。