【发布时间】:2019-09-05 00:39:03
【问题描述】:
在网络共享上使用 tnsnames.ora 文件时,将 SQL Server 链接服务器连接到 Oracle 时出现问题。
如果我将 tnsnames.ora 文件复制到本地服务器,则链接服务器可以正常工作。但是,我们将文件保存在网络共享上。我的 sql 服务帐户对共享具有读取权限。我将 TNS_ADMIN 系统变量配置为网络共享,链接服务器不再工作。我得到 ora-12154:无法解析指定的连接标识符。 tnsping 和 sqlplus 在服务器上工作。当我使用进程监视器进一步调查时,我看到:
Operation: createFile
Result: ACCESS DENIED
...
Impersonating: domain\MyLogin
这似乎是一个问题,但可能是误报?如果某个进程试图模拟我的帐户并访问远程资源,它将失败,因为我们没有将 Kerberos 配置为处理双跳。
SQLPlus 和 TNSPing 与配置的网络共享一起工作得很好。
我查看了this post 并尝试了似乎相关但没有成功的项目。
其他信息:
sqlnet.ora 有这个: SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
我可以将文件浏览器作为服务帐户打开并打开 tnsnames 文件。
【问题讨论】:
-
尝试重新启动 MSSQL 服务器以初始化 MSSQL 服务器进程的 TNS_ADMIN 变量。
-
谢谢,但我已经试过了。我通过测试知道 tns_admin 变量更改在服务重新启动之前不会生效。
-
TNS_ADMIN目录下是否有sqlnet.ora文件?如果有,请显示 sqlnet.ora 文件的内容。
-
您可以通过您的sql 服务帐户 在网络共享上阅读您
tnsnames.ora的内容吗?你真的尝试打印出内容吗? -
在我们的环境中,我们总是在服务器上使用本地 TNSNAMES 文件。我已经编写了一个 Oracle PL/SQL 包,它根据需要使用特定于服务器的自定义来编写这些文件。也就是说,因为 SQL*Plus 正在运行,我认为您遇到的是权限问题。确保运行 SS 的服务有权访问您的网络共享。
标签: sql-server oracle linked-server tnsnames