sql-serverdelphiado

TADOConnection.Close - connection still active on MS-SQL server


I have several Delphi programs (XE3), that use a TADOConnection to connect to a MS-SQL Server. I recently checked the connections in the "MS SQL Server Management Studio"'s process list.

On the server the Connection is not closed until I close the program.

Is there a way to close the TADOConnection in a way that really removes the connection on the server without exiting the program?


Solution

  • This is connection pooling; and is a good thing.

    But if you really want to hurt performance, you can opt-out of connection pooling features by adding the request to your connection string:

    Provider=SQLOLEDB;Data Source=myServerAddress;Initial Catalog=myDataBase;
    User ID=myUsername;Password=correct horse battery stapler;OLE DB Services=-2;
    

    These OLE DB Services options are documented on MSDN:

    Pooling in the Microsoft Data Access Components (archive)

    OLE DB Services  Services enabled
    ===============  ==================================================
    -1               All services (the default)
    -2               All services except pooling
    -4               All services except pooling and auto-enlistment
    -5               All services except client cursor
    -6               All services except client cursor and pooling
     0               No services