【问题标题】:How to fix error 'Ora-12154 TNS could not resolve service name' in SSIS?如何修复 SSIS 中的错误“Ora-12154 TNS 无法解析服务名称”?
【发布时间】:2010-11-06 16:59:18
【问题描述】:

当 MS-SQL Server 2000 dtsx 作业尝试运行时,收到错误 Ora-12154 TNS could not resolve service name Tnspi​​ng 到 oracle 服务以连接回复 OK。运行 dtsx 作业的 Windows 2003 x64 Server 安装了 32 位 Oracle Server、ODAC 32 位和 Oracle Client 32 位。

【问题讨论】:

  • 请说明您是指 SQL 2000 还是 2005。DTSX 是 SQL 2005/8 中 SSIS 的文件格式 - SQL 2000 具有 DTS。

标签: sql-server oracle ssis


【解决方案1】:

凯汉·尤克塞尔,

  1. 您提到了 SQL 2000 和 dtsx。是哪一个?
  2. 您提到了 64 位服务器。 SQL 也是 64 位的吗?
  3. 您还提到了“工作”。这是 SQL 代理作业吗?

如果这是 SQL 2005/8 64 位并且这确实是一个计划的作业,那么您将拥有著名的 64 位 Vs。 32位问题。

SQL 代理将以 64 位运行,并且看不到任何 32 位驱动程序。您是否安装了 64 位 Oracle 数据提供程序?

如果 tnsnames.ora 不在默认位置,则需要设置 TNS_NAMES 环境变量。还要确保您在 SSIS 包中使用正确的注册名称引用 Oracle 服务器。

拉吉

【讨论】:

    【解决方案2】:

    机器上的 TNSNames 设置可能是用户特定的。即连接可能以您的身份登录,但在 SQLAgent 用户下运行时失败。在我们的位置,我们使用联网的 TNS 名称文件,并在服务器上设置系统环境变量。这会强制它为所有用户使用相同的 TNS 名称文件:

    TNS ADMIN = \\server\path\ORACLE

    【讨论】:

    • 我们是否必须像 ORACLE_HOME(TNS_ADMIN,使用下划线)一样将 TNS ADMIN 添加到环境中。变量?顺便说一句,在 env 中没有定义 ORACLE_HOME。源服务器的变量。
    • 如果 TNS 名称文件是服务器本地的,则您不必有环境变量 - 仅当服务器需要在网络上的其他地方找到它时。如果是本地的,至少要确保 SQLAgent 帐户具有对该文件的读取权限。
    • 不太对。如果您的 tnsnames.ora 文件不在当前 ORACLE_HOME 的默认位置,则需要 TNS_ADMIN。它与文件是否在网络上的其他地方无关。事实上,我遇到了共享 tns_admin 目录的问题。它迫使所有使用它的人也共享一个 sqlnet.ora,这有时可能会出现问题。您不想在 Windows 中设置 ORACLE_HOME 环境变量 - Oracle 从注册表中获取当前 ORACLE_SID 的变量。
    • 感谢 DCookie 的澄清。
    猜你喜欢
    • 2010-09-17
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 2022-12-23
    • 2010-10-16
    相关资源
    最近更新 更多