我有一个遗留的VB6应用程序,我继承了.我面临的问题是,我正在臭名昭着
ORA-12638: Credential retrieval failed
尝试连接到我们的某个Oracle数据库时出现错误消息.但是,我可以从SQLPlus和Toad连接好.我用Google搜索了,似乎每个人都说将sqlnet.ora文件修改为
SQLNET.AUTHENTICATION_SERVICES=(NONE)
做了伎俩.我还没有找到任何人有替代修复.这是我的连接字符串的样子:
"PROVIDER=OraOLEDB.Oracle;DATA SOURCE=(DESCRIPTION = " & _ "(ADDRESS = (PROTOCOL = TCP)(HOST = server1) (PORT = 1521))" & _ "(ADDRESS = (PROTOCOL = TCP)(HOST = server2) (PORT = 1521))" & _ "(LOAD_BALANCE = yes) " & _ "(CONNECT_DATA = " & _ "(SERVER = DEDICATED) " & _ "(SERVICE_NAME = database_name_here) " & _ ") " & _ "); " & _ "User Id=username_here;Password=password_here;"
至于我的VB代码,它非常简单.
Private oracleDatabaseConnection As ADODB.Connection Set oracleDatabaseConnection = New ADODB.Connection oracleDatabaseConnection.Open oracleConnectionString
有人有主意吗?
谢谢.:)
我知道这是一个非常古老的帖子,但我找到了一个对我有用的解决方案(Legacy VB6 Application):
更改sqlnet.ora文件中的以下条目:
Original Entry - SQLNET.AUTHENTICATION_SERVICES= (NTS) Modified Entry - SQLNET.AUTHENTICATION_SERVICES= (NONE)
这是解决方案的链接
老实说,这是许多不同根问题可能导致的错误之一.
假设您的数据库服务器是Windows,请检查其事件日志,包括系统和应用程序.你可能会发现有用的东西.
我在某些情况下遇到此错误,因为运行Oracle服务的帐户已被锁定.
在我们从未找到解释的情况下,我也遇到过这种情况,但我们始终能够通过让用户锁定和解锁他们的PC来解决问题.
VB应用程序是否在与可以连接的客户端不同的机器上运行?如果是这样,是否可以在同一台机器上使用不同的客户端程序进行测试 - 或者是否可以在您的机器上尝试VB应用程序?