【发布时间】:2017-12-19 18:34:12
【问题描述】:
我正在尝试在 SQL Server 17 中通过链接服务器到 Oracle 连接源运行 openquery。当我运行下面发布的查询时,它每次都会卡在 row 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”语句中对性能来说很糟糕。
我需要知道为什么这个查询会卡在同一个地方。
【问题讨论】:
-
“卡住”是什么意思?
-
在 Microsoft SQL Server 中,查询完成一旦到达第 7833 行就会停止运行;但是,查询的状态是“正在执行查询”。当我检查活动监视器时,它在 RUNNING 任务和 SELECT 命令中“卡住”。在我取消它并完全重新启动服务器之前,查询不会停止。
-
如果您在
MyServer上运行查询,它是否正确完成? -
是的 - 我确保大型 UNION ALL(当然还有每个单独的查询)查询首先在此服务器上运行,然后再将其移动到 SQL Server。我正在尝试在 Microsoft SQL Server 中处理此查询以创建一个表并在 SSRS 中使用它。
标签: sql sql-server openquery