Created by: gzhcoder
Email address: gzhco...@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