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

Sql server 如何修复从SQL Server 2016到Oracle 12c的链接服务器?,sql-server,oracle,linked-server,Sql Server,Oracle,Linked Server,几周前,我在我的sql server 2016中设置了一个链接到oracle 12c的服务器。它工作正常,但在一些windows更新重新启动我的机器后,它就不再工作了。我可以通过sqlplus和sqldeveloper正确登录到oracle,但不能通过sqlserver。我得到以下错误: OLE DB provider "OraOLEDB.Oracle" for linked server "LINKED_ORACLE" returned message "ORA-12154: TNS:coul

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

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 Server服务,也重新启动了windows,但仍然出现相同的错误。在一次重启中会发生什么变化?如何修复它并使链接服务器重新工作?

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

找到的示例数据源:


您可以将
server01.mydomain.com:1521/OracleDB
放在数据源中,它就可以工作了
Data Source=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST= server01.mydomain.com)(PORT=1521)))(CONNECT_DATA=(SID=OracleDB)(SERVER=DEDICATED)));