Thread: Does psqlodbc_10_03_0000-x86(32bit) support PostgreSQL 12.6 64bit?

Does psqlodbc_10_03_0000-x86(32bit) support PostgreSQL 12.6 64bit?

From
管竚
Date:


 


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
> 
> 
>