Thread

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

    gzh <gzhcoder@126.com> — 2021-07-07T10:38:13Z

     
    
    
    
    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
    
    
  2. Re: Does psqlodbc_10_03_0000-x86(32bit) support PostgreSQL 12.6 64bit?

    Diego <mrstephenamell@gmail.com> — 2021-07-07T14:18:25Z

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