托管 ODP.Net:未检测到或配置 LDAP 服务器

问题描述 投票:0回答:1

我正在尝试使用托管 ODP.NET 库连接到 PowerShell 中的 Oracle 数据库(因此无法使用 app.config 文件)。将连接对象的 TnsAdmin 属性指定到包含 tnsnames.ora、sqlnet.ora 和 ldap.ora 文件的位置时,出现错误“网络命名:未检测到或配置 LDAP 服务器”。如果我将 TNS_ADMIN 环境变量设置为同一位置,则连接会成功并且可以毫无问题地进行查询,无论是否设置了连接的 TnsAdmin 属性。我试图避免这种情况,因为a)最小化服务器配置,b)如果设置了TNS_ADMIN环境变量,机器上的其他软件就会崩溃(所以我必须在不同的用户上下文下操作不同的软件)。

我无法设置连接字符串的 Tns_Admin 属性,我收到一条错误消息,指出该属性无效,即使文档声明它仅在非托管驱动程序中不可用。

我在两台 Windows 11/Server 2016 计算机上使用 Oracle.ManagedDataAccess.dll v19.3.0 连接到 19c 数据库,两台计算机上的结果相同。设置环境变量后能够成功意味着 .ora 文件没有任何问题,但连接对象在通过 TnsAdmin 属性加载时忽略了 ldap.ora 文件。上面的屏幕截图中的文档似乎就是这种情况,它指出它只查找 sqlnet.ora 和 tnsnames.ora 文件。对于这种行为有什么可以做的吗?好像没有地方可以设置连接上的ldap信息。

我已经尝试了这个答案中建议的解决方案,即从sqlnet.ora中删除LDAP,但只出现连接超时,大概是因为连接找不到LDAP服务器。

oracle powershell odp.net
1个回答
0
投票

这可能很困难,因为据我所知,

TNS_ADMIN
环境变量优先于所有其他设置。对于 ODP.Net 托管驱动程序,您还可以在
TNS_ADMIN
machine.config
文件中定义
user.config
。其他驱动程序不使用它,因此它不会影响任何其他应用程序。请参阅确定相关 tnsnames.ora 文件的位置

您也可以自己解析别名,请参阅ODP.NET托管库确实解析别名,但32位库可以解析但我认为这将是一个相当肮脏的解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.