SQL Server 2016链接了Oracle Server-突然停止工作

时间:2018-07-10 15:21:37

标签: oracle sql-server-2016 linked-server tns

重新启动Windows Server 2016 Standard(SQL Server 2016)后,运行此查询的SSIS进程:

select * from openquery(HRMPROD, 'SELECT QUERY HERE' )

开始失败,并显示以下错误:

enter image description here

如果我尝试在SSMS中运行查询,则会收到相同的错误。我在测试实例上设置了相同的链接服务器,并且在该实例上运行查询成功。我已经比较了两个实例上的链接服务器创建脚本,它是相同的。

有什么主意我应该在哪里查找导致一台服务器而不是另一台服务器上的连接问题的问题吗?

谢谢。

3 个答案:

答案 0 :(得分:3)

说答案就在Oracle方面,就像用手指指着整个过程一样。让我们在这里解决问题。

有一个从SSIS使用的连接字符串(在SSMS中也使用了该连接字符串)该连接字符串包含三个主要组件,如果其中任何一个不正确,则将导致12154错误:

  • 主机
  • 实例名称(与Sql Server上的实例不同,请考虑数据库名称)
  • 端口

端口很可能没有更改,数据库名称也没有更改,但是主机...不,没有更改,但是用于连接的DNS服务器很可能已更改!我将对主机执行ping操作,然后查看从SSIS和您使用的SSMS主机返回的内容。我希望它会失败。找出主机使用的IP地址并对其进行ping操作-查看其是否返回。我猜这是需要更新的更改,或者您的网络人员需要解决DNS配置/服务器问题。

希望这会有所帮助! 凯琳

答案 1 :(得分:0)

由于您正在从TNS侦听器获得响应,因此问题出在Oracle方面。有关Oracle网络如何处理事务的概述,请参见Architecture of Oracle Network Services。请记住,基于您已到达TNS侦听器的错误消息,因此您只需要检查TNS和Oracle数据库之间的内容即可。换句话说,您的网络和SQL Server设置很好,或者您不会能够获得此错误消息。

答案 2 :(得分:0)

我在上面同意这个问题可能与网络有关。我遇到过几次,我们可以设置所有内容,但是防火墙阻止了两个服务器之间的通信。

在新服务器上打开powershell,对目标服务器运行tracert,以查看跃点并确定是否通过网络进行连接。

如果是,请在特定端口上运行test-netconnect,以查看该端口是否已从防火墙打开。

干杯!