【问题标题】:TNS:could not resolve the connect identifier TNS:could not resolve the connect identifierTNS:无法解析连接标识符 TNS:无法解析连接标识符
【发布时间】:2010-12-29 17:42:09
【问题描述】:

我已经创建了数据集,并且可以使用表格适配器预览数据。但是当我运行程序时,使用相同的连接字符串初始化的 OracleConnection 会抛出 TNS:could not resolve the connect identifier!为什么它在设计器中有效,但在我运行时无效?

这是我得到的:

MYTNS =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.220.90)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = MYTNS )
    )
  )

【问题讨论】:

  • 你确认你的程序找到了正确的 tnsnames 文件吗?
  • 从命令行对 MYTNS 运行 TNSPING 并确认它正在使用预期的 tnsnames 文件。发布输出。
  • 32 位。我有 9 和 11g 的 Oracle 客户端。也许他们在互相干涉。我杀了所有并安装了 10g 客户端。它有效,问题得到解决,但问题仍然存在。 TNSPING 是做什么的?
  • TNSPing 测试您是否可以连接到远程侦听器。它不会检查侦听器背后的数据库是否已启动,但允许您查看侦听器是否存在并正在运行。

标签: c# oracle


【解决方案1】:

看来您的问题已经解决了,但我想我会添加这个以防将来有人出现。

我之前也遇到过同样的问题,并且使用 SysInternals Process Monitor 来查看我的应用程序正在尝试检索我机器上旧版 oracle 安装的 tnsnames 文件。

http://technet.microsoft.com/en-us/sysinternals/bb896645

【讨论】:

  • 您能否进一步解释一下您是如何使用 Process Monitor 做出该决定的?
  • @Mike - 我现在不太记得所有细节(两年后),但我记得当您运行进程监视器时,您将能够通过您的 PID 进行过滤应用。完成此操作后,您将在“路径”列中看到正在访问的 tns 名称文件。我相信它们将成为“ReadFile”操作的一部分,但不要引用我的话。
【解决方案2】:

感谢大家的意见。它总体上帮助我理解了这是如何工作的。但似乎问题出在环境变量“path”和machine.config中。运行设计器时,它从注册表中读取信息并成功找到所需的所有 dll,但在运行时它使用路径。因此,您只需将指向 ORA 主页的路径放在前面。
操纵路径是一个众所周知的秘诀,但是在您更深入地了解 ora 提供程序 .NET 的工作原理之前,您最终会无意识地尝试您所知道的一切。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 2012-09-29
    • 2013-12-19
    • 2017-10-06
    • 2014-11-23
    • 2014-06-23
    • 1970-01-01
    相关资源
    最近更新 更多