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