cancel
Showing results for 
Search instead for 
Did you mean: 

dbdata16.dll is written at every start?!

MCMartin
Participant
4,743

At every start of a .net program using the .net driver for SQLA the file dbdata16.dll is written again. This will usually be checked by any anti virus software. On a server system with multiple background programs this behavior generates an unnecessary workload.

Just a sidenote: even when the DLL is already loaded, the programs will search for it afterwards in the GAC.


Feature request: Only write dbdata16.dll when it is necessary (e.g. an update, or file is not existing)

VolkerBarth
Contributor
0 Kudos

I'd think that this is at least documented behaviour:

The SQL Anywhere .NET Data Provider dbdata DLL

When the SQL Anywhere .NET Data Provider is first loaded by a .NET application (usually when making a database connection using SAConnection), it unpacks a DLL that contains the provider's unmanaged code. The file dbdata16.dll is placed by the provider in a subdirectory of the directory identified using the following strategy. [...]

MCMartin
Participant
0 Kudos

I know, therefore I asked for a feature change

MCMartin
Participant
jack_schueler
Advisor
Advisor
0 Kudos

Re: Just a sidenote: even when the DLL is already loaded, the programs will search for it afterwards in the GAC.

I cannot see this behavior.

Accepted Solutions (0)

Answers (1)

Answers (1)

jack_schueler
Advisor
Advisor

A fix is forthcoming that will change this behavior. If the dbdata DLL is present, the provider will load it and do a version check. If that passes, it will use it. If not, then it will try to delete it, and then move on.

Tip: Currently, the provider attempts to delete the DLL first and, if this fails, then it will load it and check the version. So if you make the DLL read-only, you will get the behaviour you are looking for. Strange but true.