Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从Oracle查询SQL Server-强制元数据刷新_Sql Server_Oracle_Dblink - Fatal编程技术网

Sql server 从Oracle查询SQL Server-强制元数据刷新

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

我是一名SQL Server开发人员,在Oracle中执行任务。DBA在Oracle中设置指向SQL Server数据库的DBLink。我正在编写一个SQL Server数据视图,然后在Oracle端编写一个视图,将其与其他Oracle数据连接起来

问题:如果我在SQL Server上更改视图的定义,甚至“Select*From”myview@dblink“无效列”错误。关闭TOAD并重新打开似乎可以解决问题,但真正的问题是如何强制Oracle在不重置连接的情况下重新读取元数据

也许你能做到

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的帮助。