Thread: Does psqlodbc_10_03_0000-x86(32bit) support PostgreSQL 12.6 64bit?
Created by: gzhcoder Email address: gzhcoder@126.com PostgreSQL version: 12.6 Operating system: windows 10 Description: I have a classic ASP Website on IIS. I change the “ Enable 32-bit Applications ” to True (Set the IIS application pool to spawn in a 32-bit mode). The Website connect to PostgreSQL 9.4 64bit with psqlodbc_10_03_0000-x86(32bit) and it works very well . When I change the PostgreSQL 9.4 64bit to PostgreSQL 12.6 64bit . I get the error below : Number: -2147217887 Description: Multiple-step OLE DB operation generated errors. I found that the problem occurred in the third step: Step 1. Starts a new transaction with the BeginTrans method. Step 2. Creates an OraDynaset object from the specified SQL SELECT statement SQL-A. Step 3. Creates an OraDynaset object from the specified SQL SELECT statement SQL-B. Step 4. Ends the current transaction with the CommitTrans method. I made an sample asp as below: psqlodbc.asp -------------------------------------------------------------- start ------------------------------------------------------------- <%@ language='VBScript' %> <% Option Explicit Function CreateDynaset(ArgSQL, ArgMod,cn ) dim rs Set rs = CreateObject("ADODB.Recordset") if ArgMod = 0 then rs.Open ArgSQL, cn, 1, 3 else rs.Open ArgSQL, cn, 3, 2 End if Set CreateDynaset = rs End Function %> <% Dim sConnection, objConn , objRS1, objRS2 ,sql stop sConnection ="DRIVER={PostgreSQL Unicode};SERVER=999.999.999.999;database=XXXXXX;UID=XXXXXX;PASSWORD=XXXXXX;port=5432" Set objConn = Server.CreateObject("ADODB.Connection") objConn.Open(sConnection) 'DoStep1 objConn.BeginTrans 'SQL-A sql = "SELECT cola FROM odbctest.t_odbc_a " On Error Resume Next 'DoStep2 set objRS1 = CreateDynaset(sql, 8, objConn) If Err.Number <> 0 Then WScript.Echo "Error in DoStep2: " & Err.Description Err.Clear End If If objRS1.EOF <> True Then objRS1.Close Set objRS1 = Nothing End If objRS1.Close Set objRS1 = Nothing 'SQL-B sql="SELECT colb FROM odbctest.t_odbc_b" On Error Resume Next 'DoStep3 set objRS2 = CreateDynaset(sql, 8, objConn) If Err.Number <> 0 Then WScript.Echo "Error in DoStep3: " & Err.Description Err.Clear End If If objRS2.EOF <> True Then objRS2.Close Set objRS = Nothing End If objRS2.Close Set objRS2 = Nothing 'DoStep4 objConn.CommitTrans objConn.Close Set objConn = Nothing %> <html><body>psqlodbc test</body></html> -------------------------------------------------------------- end ------------------------------------------------------------- Thanks for any help
hi, Try with a newer version of odbc driver, something like psqlodbc_12_02_0000 On 07/07/2021 07:38, 管竚 wrote: > > > > Created by: gzhcoder > Email address: gzhcoder@126.com > PostgreSQL version: 12.6 > Operating system: windows 10 > Description: > > I have a classic ASP Website on IIS. I change the “ Enable 32-bit > Applications ” to True (Set the IIS application pool to spawn in a 32-bit > mode). > The Website connect to PostgreSQL 9.4 64bit with > psqlodbc_10_03_0000-x86(32bit) and it works very well . > When I change the PostgreSQL 9.4 64bit to PostgreSQL 12.6 64bit . I get the > error below : > > Number: -2147217887 > Description: Multiple-step OLE DB operation generated errors. > > I found that the problem occurred in the third step: > Step 1. Starts a new transaction with the BeginTrans method. > Step 2. Creates an OraDynaset object from the specified SQL SELECT statement > SQL-A. > Step 3. Creates an OraDynaset object from the specified SQL SELECT statement > SQL-B. > Step 4. Ends the current transaction with the CommitTrans method. > > I made an sample asp as below: > psqlodbc.asp > -------------------------------------------------------------- start > ------------------------------------------------------------- > > <%@ language='VBScript' %> > <% > Option Explicit > > Function CreateDynaset(ArgSQL, ArgMod,cn ) > dim rs > Set rs = CreateObject("ADODB.Recordset") > > if ArgMod = 0 then > rs.Open ArgSQL, cn, 1, 3 > else > rs.Open ArgSQL, cn, 3, 2 > End if > > Set CreateDynaset = rs > End Function > %> > <% > Dim sConnection, objConn , objRS1, objRS2 ,sql > stop > sConnection ="DRIVER={PostgreSQL > Unicode};SERVER=999.999.999.999;database=XXXXXX;UID=XXXXXX;PASSWORD=XXXXXX;port=5432" > > Set objConn = Server.CreateObject("ADODB.Connection") > > objConn.Open(sConnection) > > 'DoStep1 > objConn.BeginTrans > > 'SQL-A > sql = "SELECT cola FROM odbctest.t_odbc_a " > On Error Resume Next > > 'DoStep2 > set objRS1 = CreateDynaset(sql, 8, objConn) > > If Err.Number <> 0 Then > WScript.Echo "Error in DoStep2: " & Err.Description > Err.Clear > End If > > If objRS1.EOF <> True Then > objRS1.Close > Set objRS1 = Nothing > End If > > objRS1.Close > Set objRS1 = Nothing > > 'SQL-B > sql="SELECT colb FROM odbctest.t_odbc_b" > > On Error Resume Next > > 'DoStep3 > set objRS2 = CreateDynaset(sql, 8, objConn) > > If Err.Number <> 0 Then > WScript.Echo "Error in DoStep3: " & Err.Description > Err.Clear > End If > > If objRS2.EOF <> True Then > objRS2.Close > Set objRS = Nothing > End If > > objRS2.Close > Set objRS2 = Nothing > > 'DoStep4 > objConn.CommitTrans > > objConn.Close > Set objConn = Nothing > %> > > <html><body>psqlodbc test</body></html> > > -------------------------------------------------------------- end > ------------------------------------------------------------- > > > Thanks for any help > > >