我有一些代码,该代码基于几个值生成SQL查询。最终结果需要调用两个数据库来创建一个DataTable
。第二个数据库由我们一直使用的数据库链接连接。C#本身是固体的,最终结果查询字符串是:
SELECT distinct HOME.MISC.PROCEDURE(H.WIDGET, H.FIDGET),
H.WIDGET ,
(SELECT WIDGETYPE
FROM VISITOR.SOMETABLE@DEVSERV --here is where it all goes bad, bad bad.
WHERE UPPER(WIDGET_SN) = UPPER(H.WIDGET)
) ,
H.FIDGET,
HOME.STUFF.ANOTHERPROCEDURE(H.WIDGET)
FROM HOME.WIDGET_HEAP H
INNER JOIN HOME.WIDGET_LIST L
ON H.WIDGET = L.WIDGET_ID
WHERE UPPER(L.WIDGET_ID ) = UPPER('1337-H4X')
显然,这些不是真实的字段名称或值,但是您明白了。当我在断点中从变量本身中提起查询时,我可以将SQL粘贴到SQL开发人员中,并且效果很好。当我运行查询并尝试在程序中填充我的DataTable
时,我会得到:
ORA-02019:找不到远程数据库的连接说明;
用户名/tns/etc等都正确设置了,因为我们有许多程序使用相同的信息来建立其连接。我在这里使用链接时做错了吗?我已经搜索了Google,并在这里搜索了许多关于错误的引用,但是没有什么样的情况。
,因为您可以在sqldevelpinger中运行它,因此听起来像是DB_LINK的可见性的问题。这是链接公共数据库链接吗?如果是这样,所有用户都可以访问。如果没有,则只有您登录到SQLDEVEVELER的用户才能访问它。如果是这种情况,应用程序用户是同一用户吗?如果不是,那么它就无法访问它。关键在于错误描述,连接描述找不到。确保您的应用程序可以看到此链接。