当我尝试使用MS ADO访问数据库时,收到ORA-03106错误。此问题仅发生在Windows 7 64位计算机上。显然,过去XP存在问题,但是通过一些注册表编辑修复了它们。这些注册表编辑在应用于Windows 7计算机时未执行任何操作。
我没有太多关于数据库的信息,因为这是由不同的部门处理的,我是一名实习生,这个问题只是因为背景信息很少而被抛给我。这是代码,我在MyConnection.Open行上得到了错误。
Function db_fetch(sIButtonID, ByRef lstatus, sdescr) As tIBRec
Dim myRecordSet As ADODB.Recordset
'Dim sConnectString As String
Dim sSQL_Statement As String
Dim this_ibutton As tIBRec
Set myRecordSet = New ADODB.Recordset
If Not CheckForNetDrive("O:") Then
lstatus = Shell("net use O: \\host\oracle /PERSISTENT:YES")
If Not CheckForNetDrive("O:") Then lstatus = MapNetworkDrive("O:", "\\host\oracle")
If lstatus = 0 Then
If InStr(GetEnvironmentVar("PATH"), "orawin95\bin") = 0 Then
lstatus = SetEnvironmentVariable("PATH", GetEnvironmentVar("PATH") & ";O:\orawin95\bin")
End If
End If
Else
If InStr(GetEnvironmentVar("PATH"), "orawin95\bin") = 0 Then
lstatus = SetEnvironmentVariable("PATH", GetEnvironmentVar("PATH") & ";O:\orawin95\bin")
End If
End If
'sConnectString = "Provider=msdaora;Data Source=(DESCRIPTION=(SOURCE_ROUTE=OFF)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host)(PORT=1521)))(CONNECT_DATA=(SID=12)(SERVER=DEDICATED)));User Id=username;Password=password;"
'sConnectString = "Provider=msdaora;Data Source=(DESCRIPTION=(SOURCE_ROUTE=OFF)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host)(PORT=1521)))(CONNECT_DATA=(SID=03)(SERVER=DEDICATED)));User Id=username;Password=password;"
'sConnectString = "Provider=msdaora;Data Source =(DESCRIPTION=(SOURCE_ROUTE=OFF)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host)(PORT=1521)))(CONNECT_DATA=(SID=03)(SERVER=DEDICATED)))User Id=username;Password=password;"
'On Error GoTo err:
If myConnection.State = 0 Then
myConnection.Mode = adModeReadWrite
myConnection.Open sConnectString
End If
答案 0 :(得分:1)
我认为您的计算机上没有ADO(没有 .NET ),即“Oracle OLE DB提供程序”。
解决方案:
Install.bat oledb c:\Oracle\OLEDB_11.2_x32\ OraClient11g_home1 true
安装提供程序。假设“OraClient11g_home1”是您的Oracle主目录。 确保给定目录与Oracle客户端目录不同!c:\Oracle\OLEDB_11.2_x32\
和c:\Oracle\OLEDB_11.2_x32\bin\
添加到您的PATH环境中。确保将这些目录放在之前 Oracle客户端主目录。TNS_ADMIN = {Oracle client home diretory}\network\admin
尝试它是否有效。
注意:即使您安装了多个Oracle客户端,也只能在一台计算机上安装一个版本的“Oracle Provider for OLE DB”。
按照这个程序,我设法为Windows 7,64Bit,Oracle 11.2以及同时在Win7 x64和旧版XP上运行的旧VBA Excel宏工作。
抱歉,我错过了您尝试使用Microsoft OLE DB提供程序(msdaora),此解决方案适用于Oracle提供程序。我不知道它们有多么不同,perhpaps你只需要调整连接字符串。