[Oracle] [ODBC] [Ora] ORA-12170:TNS:发生连接超时错误[IM006] [Microsoft] [ODBC驱动程序管理器]驱动程序的SQLSetConnectAttr失败

时间:2014-04-22 19:43:01

标签: oracle ssis odbc ora-12170

我创建了一个SSIS包,用于将数据从Oracle数据库提取到SQL Server数据库。我在本地计算机和服务器上成功建立了ODBC连接,我可以在两种环境下使用sqlplus连接到Oracle数据库。 我的包在我的本地机器上正常运行。当我从服务器上的Package store运行它时它也成功执行但问题是当我以sql作业运行包时出现了这个错误:

描述:

  

System.Data.Odbc.OdbcException:ERROR [HY000] [Oracle] [ODBC] [Ora] ORA-12170:TNS:发生连接超时错误[IM006] [Microsoft] [ODBC驱动程序管理器]驱动程序' s SQLSetConnectAttr失败ERROR [HY000] [Oracle] [ODBC] [Ora] ORA-12170:TNS:在System.Data.Odbc.OdbcConnectionHandle的System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle RetCode retcode)处发生连接超时。 System.Data上的System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions选项,对象池组,提供DbConnectionPool池,DbConnection,拥有对象)的System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection outerConnection OdbcConnectionString connectionOptions)中的ctor(OdbcConnection连接OdbcConnectionString constr OdbcEnvironmentHandle environmentHandle) System.Data.ProviderBase.DbConnectionFactory.GetConnectio中的.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection DbConnectionPoolGroup poolGroup) System.Data.Odbc.OdbcConnection.Open()

中的System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection DbConnectionFactory connectionFactory)中的n(DbConnection owningConnection)

它是否有任何意义?

3 个答案:

答案 0 :(得分:0)

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

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

如果这是一个并非始终发生的瞬态错误,或者防火墙和网络ACL看起来没问题,那么请检查ARP行为是否正确。我自己最近遇到过这个问题,并在http://distracted-it.blogspot.co.nz/2014/04/ora-12170-tnsconnect-timeout-resolved.html

发表了博客文章

希望它有所帮助。

答案 1 :(得分:0)

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

  • 浏览到Oracle文件夹,例如C:\ Oracle64
  • 右键单击文件夹,单击“属性”,“安全”选项卡,单击“编辑”,然后单击“添加”
  • 更改"地点"成为您所在的机器名称。
  • 输入名称“NT Service \ SqlServerAgent”(这必须完全正确)并单击“检查名称”。
  • 单击“确定”,“应用”,“确定”返回安全选项卡,您应该看到“SQLSERVERAGENT”有一个“读取”和“打开”的勾号。允许,读取,列出文件夹内容 enter image description here

答案 2 :(得分:0)

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

相关问题