on 2013 Feb 09 10:02 AM
My application uses the SA ADO .NET data provider. I had upgraded my application to use SQ 12.0.1 EBF 3840 earlier in the week, but I had to roll it back to EBF 3817 on Friday. I've been getting the following error when my program starts up:
System.EntryPointNotFoundException: Unable to find an entry point named 'AsaConnection_CloseDataReaders' in DLL 'dbdata12.dll'.
I've done a search and I found this documentation page about dbdata12.dll. I've done a search of the C: drive on my machine and I can't find dbdata12.dll anywhere on it. Apparently, the program isn't unpacking it, either.
How do I fix this problem?
P.S. My program uses the .Net 4.0 framework and Entity Framework 4. Consequently, I'm using iAnywhere.Data.SQLAnywhere.V4.0.dll. One of the DLLs in the program also uses the ASP.NET Membership and Role providers in iAnywhere.Web.Security.dll, which is compiled using the .Net 2.0 framework. That means that the DLL has to include iAnywhere.Data.SQLAnywhere.dll. Could this be some kind of a conflict issue with the two different versions of the iAnywhere.Data.SQLAnywhere DLL?
With the help of another developer here, I’ve resolved this.
The problem is that the uninstaller does not remove all 3840 DLLs from the GAC. Specifically, I found copies of iAnywhere.Data.SQLAnywhere.V4.0.dll and policy.12.0.iAnywhere.Data.SQLAnywhere.V4.0.dll and policy.12.0.iAnywhere.Data.SQLAnywhere.V4.5.dll in the C:WindowsMicrosoft.NETassemblyGAC_MSIL folders for EBF 3840, even after I had uninstalled SQL Anywhere from my machine twice.
Once I deleted those DLLs, the problem stopped.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
The provider unpacks the unmanaged code (dbdata12.dll) when you run your .NET application.
The SQL Anywhere uninstaller will not clear anything from the GAC because it does not know if you have applications built against a specific version of the provider. To arbitrarily remove versions of the provider could break your .NET applications.
You can use SetupVSPackage to uninstall the current 12.0.1 .NET provider build (/uninstall) or all of them (/uninstallall).
See http://dcx.sybase.com/index.html#1201/en/dbprogramming/deploying-dotnet-uninstall.html*d5e51482
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@JBSchueler: OK, I see, what I forgot to do was to run SetupVSPackage -U before uninstalling. Perhaps the installer should ask the user if they want to run this step during the uninstall? I mean, if you don't have a server running on your box, what good is having the DLLs in the GAC going to do you?
I suggest reinstalling SA from scratch. Most likely your attempt to "downgrade" SA resulted in missing files or/and version mismatch between components.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
That's what I did. That is, I unintalled SA & I reinstalled it.
The dbdata12.dll file is included as a resource in the iAnywhere.Data.SQLAnywhere.dll file. It's also in the iAnywhere.Data.SQLAnywhere.v4.0.dll file. The file is supposed to be automatically extracted by the DLL.
I'm going to add more information to my post.
User | Count |
---|---|
79 | |
11 | |
10 | |
10 | |
10 | |
9 | |
8 | |
6 | |
5 | |
5 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.