如何将链接服务器从 SQL Server 2016 修复到 Oracle 12c?

How to fix Linked Server from SQL Server 2016 to Oracle 12c?

几周前,我在 sql 服务器 2016 中设置了一个链接服务器到我的 oracle 12c this guide。它工作正常,但在一些 windows 更新重启我的机器后,它不再工作。我可以通过 sqlplus 和 sql 开发人员正确登录 oracle,但不能通过 sql 服务器。我收到以下错误:

OLE DB provider "OraOLEDB.Oracle" for linked server "LINKED_ORACLE" returned message "ORA-12154: TNS:could not resolve the connect identifier specified".
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "OraOLEDB.Oracle" for linked server "LINKED_ORACLE".

我重新启动了 SQL 服务器服务,并再次重新启动了 windows,但仍然是同样的错误。一次重启可能会改变什么?我怎样才能修复它并让链接服务器重新工作?

出于某种原因,SQL 服务器在重新启动前正确读取 tnsnames.ora 文件,但在重新启动后它停止了。我不得不重新创建链接服务器,并将整个连接字符串放在数据源字段中,以便它再次工作。

找到样本数据源here

Data Source=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST= server01.mydomain.com)(PORT=1521)))(CONNECT_DATA=(SID=OracleDB)(SERVER=DEDICATED)));