ich greife in einem Programm mittels ODBC auf einen MS SQL-Server zu. Das hat bisher auch gut funktioniert. Seit der Umstellung auf Lazarus 2.0.10 und FPC 3.2 erhalte ich hier einen HY010-Fehler. Das heißt, dass im Hintergrund noch Aktionen laufen. Allerdings erhalte ich diesen Fehler auch, wenn nur ein Connect und ein Disconnect vom Programm ausgeführt wird.
Hat hier jemand eine Idee?
Aufbau der Verbindung:
Code: Alles auswählen
procedure TMSSql.openConnection;
begin
// wenn nicht verbunden
if (FMSSQLConnection = nil) or (not FMSSQLConnection.Connected) then
begin
try
FMSSQLConnection := TODBCConnection.Create(nil);
FSQLTransaction := TSQLTransaction.Create(nil);
FMSSQLConnection.Params.Add('Dsn=' + getMSSQLServer);
FMSSQLConnection.Params.Add('Server=' + getMSSQLServer);
FMSSQLConnection.Params.Add('AUTOCOMMIT=1');
FMSSQLConnection.Transaction := FSQLTransaction;
except
on E: Exception do
WriteLn('Fehler bei der Verbindung zur MSSQL Datenbank!');
end;
end;
end;
Code: Alles auswählen
procedure TMSSql.closeConnection;
begin
// prüfen ob verbunden
if FMSSQLConnection.Connected then
begin
try
// Transaktion beenden
FSQLTransaction.CommitRetaining;
FSQLTransaction.EndTransaction;
// Verbindung schließen
FMSSQLConnection.Close(True);
except
on E: Exception do
Write('Fehler beim Close!');
end;
end;
end;
Code: Alles auswählen
[FORMS.PP] ExceptionOccurred
Sender=EODBCException
Exception=Could not free ODBC Environment handle. ODBC error details: LastReturnCode: SQL_ERROR; Record 1: SqlState: HY010; NativeError: 0; Message: [Microsoft][ODBC Driver Manager] Fehler in der Funktionsreihenfolge;
Stack trace:
$00000001001F44D9
$00000001001F466F
$00000001001F87A4
$000000010000F06B
$00000001001F8977
$00000001000118F7
$0000000100011BC2
$0000000100011C6A
$0000000100003845 main, line 165 of RiedlEDIConv.lpr
$0000000100003866 main, line 165 of RiedlEDIConv.lpr
$0000000100017B30
$0000000100002D30
$00007FFF81CA7034
$00007FFF837BCEC1
Exception at 00000001001F44D9: EODBCException:
Could not free ODBC Environment handle. ODBC error details: LastReturnCode: SQL_ERROR; Record 1: SqlState: HY010; NativeError: 0; Message: [Microsoft][ODBC Driver Manager] Fehler in der Funktionsreihenfolge;.
Marked memory at $00000000086FF008 invalid
Wrong size : 18369900232523579118 allocated 18369900232523532423 freed