Sql server 从Oracle查询SQL Server-强制元数据刷新
我是一名SQL Server开发人员,在Oracle中执行任务。DBA在Oracle中设置指向SQL Server数据库的DBLink。我正在编写一个SQL Server数据视图,然后在Oracle端编写一个视图,将其与其他Oracle数据连接起来 问题:如果我在SQL Server上更改视图的定义,甚至“Select*From”myview@dblink“无效列”错误。关闭TOAD并重新打开似乎可以解决问题,但真正的问题是如何强制Oracle在不重置连接的情况下重新读取元数据 也许你能做到Sql server 从Oracle查询SQL Server-强制元数据刷新,sql-server,oracle,dblink,Sql Server,Oracle,Dblink,我是一名SQL Server开发人员,在Oracle中执行任务。DBA在Oracle中设置指向SQL Server数据库的DBLink。我正在编写一个SQL Server数据视图,然后在Oracle端编写一个视图,将其与其他Oracle数据连接起来 问题:如果我在SQL Server上更改视图的定义,甚至“Select*From”myview@dblink“无效列”错误。关闭TOAD并重新打开似乎可以解决问题,但真正的问题是如何强制Oracle在不重置连接的情况下重新读取元数据 也许你能做到 a
alter view <<view_name>> compile;
alterview编译;
我没有测试这个,因为我没有从Oracle到MSSQL的db链接 这听起来像是蟾蜍的问题,而不是甲骨文的问题。如果在SQL*Plus中执行,会发生什么情况?这似乎是Oracle 10g客户端的一个问题。当前的解决方案是断开并重新连接。考虑到我还没有找到其他有此问题的人,我将假定这是我的客户端配置有问题。我不知道我是否理解您的意思,但如果您有一个指向Oracle数据库中SQL server数据库的
dblink
,并且您需要SQL server中的数据,请执行以下操作:
SELECT *
FROM TABLE@dblink
SELECT "COL", "COL2", "COL3
from TABLE@dblink
SELECT T."COL", H."COL"
FROM TABLE1@dblink T, TABLE2@dblink H
WHERE T."ID" = H."ID"
我将在周一做第一件事。同样的事情在SQL*Plus中也会发生。如果我退出,然后再进去,一切正常。必须在连接对象上缓存元数据。下一次测试,我在TOAD中查询视图,对其进行了更改,再次查询。它失败了。然后我打开了第二个连接。查询运行得很好。必须在连接对象上。如果在会话中执行提交/回滚,会发生什么情况?否。只有终止连接才能强制元数据刷新。必须是Oracle客户端配置中的某个内容—由我们的操作人员控制。我将与他们讨论。谢谢Matthew和tuinstoel的帮助。