3

我创建了一个 SSIS 包来将数据从 Oracle 数据库提取到 SQL Server 数据库。我已经在本地机器和服务器上成功设置了 ODBC 连接,我可以在两种环境中使用 sqlplus 连接到 Oracle 数据库。我的包在我的本地机器上运行良好。当我从服务器上的包存储运行它时它也成功执行但问题是当我将包作为 sql 作业运行时出现此错误:

描述:

System.Data.Odbc.OdbcException:错误 [HY000] [Oracle][ODBC][Ora]ORA-12170:TNS:发生连接超时错误 [IM006] [Microsoft][ODBC 驱动程序管理器] 驱动程序的 SQLSetConnectAttr 失败错误 [HY000] [ Oracle][ODBC][Ora]ORA-12170:TNS:连接超时发生在 System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle RetCode retcode) at System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection connection OdbcConnectionString constr OdbcEnvironmentHandle environmentHandle) 在 System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection outerConnection OdbcConnectionString connectionOptions) 在 System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions 选项 Object poolGroupProviderInfo DbConnectionPool pool DbConnection owningObject) 在 System.Data.ProviderBase.DbConnectionFactory。CreateNonPooledConnection(DbConnection owningConnection DbConnectionPoolGroup poolGroup) 在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) 在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection DbConnectionFactory connectionFactory) 在 System.Data.Odbc.OdbcConnection.Open()

它有任何意义吗?

4

3 回答 3

1

ORA-12170 表示与数据库侦听器的 TCP 连接失败。

如果这是一直发生的错误,请检查您的连接字符串(尤其是端口号)、防火墙和网络 ACL。

如果这是一个不总是发生的暂时性错误,或者防火墙和网络 ACL 正常,则检查 ARP 行为是否正确。我自己最近也遇到了这个问题,并在http://distracted-it.blogspot.co.nz/2014/04/ora-12170-tnsconnect-timeout-resolved.html上写了一篇博客

希望能帮助到你。

于 2014-04-26T09:56:13.030 回答
1

由于缺少权限,可能会导致 ORA-12170。Sql Server 代理服务帐户必须有权访问 Oracle 客户端文件夹。您可以通过以管理员身份登录服务器并尝试手动运行作业来测试这是否是问题,如果它以这种方式工作,那么它可能是权限。要更改权限:

  • 浏览到 Oracle 文件夹,例如 C:\Oracle64
  • 右键单击文件夹,单击属性,安全选项卡,单击编辑,单击添加
  • 将“位置”更改为您所在的机器名称。
  • 输入名称“NT Service\SqlServerAgent”(必须完全正确),然后单击“检查名称”。
  • 单击确定、应用、确定返回安全选项卡,您应该看到“SQLSERVERAGENT”对读取和允许、读取、列出文件夹内容打勾 在此处输入图像描述
于 2015-10-07T10:34:31.573 回答
1

有时,当您在其中一个查询中访问 DBLINK 时会发生这种情况,并且指向 dblink 的数据库已关闭,因此您也必须检查这一点。

于 2016-09-27T00:24:01.410 回答