dbe*_*ham 5 t-sql toad openquery oracle11g sql-server-2008-r2
使用TOAD直接针对Oracle 11运行时,以下查询有效工作(使用本机Oracle驱动程序)
select ... from ... where ...
and srvg_ocd in (
select ocd
from rptofc
where eff_endt = to_date('12/31/9999','mm/dd/yyyy')
and rgn_nm = 'Boston'
) ...
;
Run Code Online (Sandbox Code Playgroud)
如果从SQL Server 2008传递到同一个Oracle数据库,则完全相同的查询"never"将返回openquery()
.SQL Server使用Oracle Provider OLE DB驱动程序链接到Oracle数据库.
select * from openquery( servername, '
select ... from ... where ...
and srvg_ocd in (
select ocd
from rptofc
where eff_endt = to_date(''12/31/9999'',''mm/dd/yyyy'')
and rgn_nm = ''Boston''
) ...
');
Run Code Online (Sandbox Code Playgroud)
查询不会在合理的时间内返回,并且用户会终止查询.我不知道它最终会以正确的结果返回.
直接TOAD查询有效工作且openquery()
版本"从不"返回的结果是可重现的.
对它的一个小修改openquery()
给出了正确有效的结果:eff_endt
改为trunc(eff_endt)
.
这很好,但似乎不应该有必要改变.
openquery()
应该通过,那么TOAD和openquery()
行为之间怎么会有区别呢?
我们关心的原因是因为我们经常使用TOAD直接访问Oracle来开发复杂的查询.一旦我们对查询起作用并进行了优化,我们就将其转换为一个openquery()
字符串,以便在SQL Server应用程序中使用.openquery()
当我们知道它作为直接查询工作时,查询突然失败是非常恼人的.然后我们必须通过反复试验来寻找解决方法.
我想看两个场景的Oracle跟踪文件,但Oracle服务器在另一个组织内,我们没有得到Oracle DBA的合作.
有谁知道任何驱动程序,或TOAD,或??? 可能导致差异的问题?有没有办法消除这个问题,这两种方法总是给出相同的结果?
小智 1
我知道你不久前问过这个问题,但我刚刚遇到你的问题。
我同意,它们应该是相同的。显然是有区别的。我们需要找出差异在哪里。
我一边打字一边大声思考……
如果您只指定几列而不是 select * from openquery 会发生什么?
应该返回多少行?
如果在 oracle select 中限制返回的行怎么办?
openquery 超时多久?
TOAD 和 SS 在同一台机器上吗?您是否通过 RDPing 进入 SS 并从那里运行蟾蜍?
他们使用相同的驱动程序吗?包括位?(32/64) 版本?
他们在 oracle 上使用相同的帐户吗?
有趣的是,使用它trunc()
会有所不同。我假设 [eff_endt] 是返回的字段之一?
我想知道 SS 是否正在取回所有行,但它在进行日期转换时令人窒息。oracle中的日期类型可能需要转换为ss日期类型,然后ss才会显示给您。
如果将 openquery 中的行插入到日期字段只是(n)varchar
. 我认为 ss 可能只是将从 Oracle 返回的日期转储到该文本字段中,而不尝试对其进行转换。
就像是:
insert into mytable(f1,f2,f3,datetimeX)
select f1,f2,f3,datetimeX from openquery( servername, '
select f1,f2,f3,datetimeX from ... where ...
and srvg_ocd in (
select ocd
from rptofc
where eff_endt = to_date(''12/31/9999'',''mm/dd/yyyy'')
and rgn_nm = ''Boston''
) ...
');
Run Code Online (Sandbox Code Playgroud)
如果 toad 或 ss 在将查询语句发送到 oracle 之前修改该查询语句怎么办?您可以启动wireshark并查看toad和ss实际发送的内容。
如果你能解决这个问题,我会很好奇。我经常将 ss 链接到 oracle,但没有遇到这个问题。
归档时间: |
|
查看次数: |
3171 次 |
最近记录: |