Clearing the Poolmanager
Posted: Fri 26 Aug 2016 13:06
Hello again,
we migrated from ADO to SDAC. The next step for us was to enable connection pooling from SDAC. To get rid of connections to a database we want to delete we call TMSConnectionPoolManager.Clear. In some cases we get an access violation when we close a query afterwards. The pooling causes the connection to be put back into the pool which was freed before. Following an example to replicate the issue:
Since TMSConnectionPoolManager.Clear isn't documented we are not sure if we use it properly or whether it is an implementation problem on your side. Any help is appreciated.
Best regards
we migrated from ADO to SDAC. The next step for us was to enable connection pooling from SDAC. To get rid of connections to a database we want to delete we call TMSConnectionPoolManager.Clear. In some cases we get an access violation when we close a query afterwards. The pooling causes the connection to be put back into the pool which was freed before. Following an example to replicate the issue:
Code: Select all
var
con: TMSConnection;
qry: TMSQuery;
begin
CoInitialize(nil);
con := TMSConnection.Create(nil);
con.ConnectString := 'Data Source=TEST;Initial Catalog=TEST;Authentication=Windows';
con.Pooling := True;
qry := TMSQuery.Create(nil);
try
qry.Connection := con;
qry.SQL.Text := 'SELECT 1';
qry.Open;
TMSConnectionPoolManager.Clear;
qry.Close;
finally
qry.Free;
con.Free; // here access violation
end;
Best regards