Connecting to a SQL Server or other
database with the cicode functions SQLConnect() or DevOpen() will
connect via the ODBC driver. From our experence this operation is
very slow and resouce consuming (memory and CPU and network
bandwidth). We have also found that a large number of ODBC drivers
also leak memory every time you connect to the SQL server (see
Q1551 for this problem with Oracle). That
is every time you disconnect from the database the ODBC driver does
not free all the memory it allocated when it connected. The result
is that after connecting and disconnecting many times you can cause
the performance of your computer to degrade and may even crash. It
is quite typical to have a report in Citect which is runs very
frequently (eg 20 times or more a day) which will cause this to
occur.
The best solution to this problem is to connect to the SQL
server when Citect starts up and only disconnect when you shut
Citect down. Keeping the connection open to the SQL server will
only use a small amout of resources on the SQL server and will
greatly increase the performance of your Citect system. Most other
applications which use SQL servers operate in this way, this is why
the memory leaks in the ODBC drivers have not caused a problem to
other users (and why they have not been fixed by the ODBC driver
developers).
|