Created by:          gzhcoder
Email address:      [email protected]
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