MS SQL CE 3.1 and 3.5 same machine

Discussion of open issues, suggestions and bugs regarding usage of dbExpress drivers for SQL Server in Delphi and C++Builder
Post Reply
jyarnot
Posts: 6
Joined: Tue 27 May 2008 15:48

MS SQL CE 3.1 and 3.5 same machine

Post by jyarnot » Fri 03 Oct 2008 13:27

I am using SQL Server CE 3.1 in my Delphi desktop application. Everything has been going fine until recently when one of the testers installed Visual Studio 2008 onto the same computer that had my software on it. Now, when she runs my software she gets a message indicating that her database is from an older version of SQL Server Compact Edtion and that she should update it. Both versions of the CE dlls are registered (sqlceca30.dll and sqlceca35.dll as well as sqlceoledb30.dll and sqlceoledb35.dll) but it seems to get the 3.5 version of things now. Unregistering the 3.5 dlls fixes her problem, but that's not a practical solution as once this is deployed we can't be unregistering people's dlls. I could upgrade to 3.5, but since there's no version of mangement studio to manipulate schema/data for 3.5 (yet) and I don't really need the new features I don't want to. Also, it wouldn't address my underlying problem (next time there's an update I've got the same issue) and I could then end up being the one to break someone's 3.1 app. Has anyone seen this? Am I missing something fundamental? Since this is the piece that ties dbExpress and CE together, I thought I'd start asking here. Thanks!

Update: After looking into this further, I have found that it is only the sqlceoledb35.dll that seems to make the difference (if I unregister only that one,everthing works). This strikes me as odd, since I am specifying sqlceoledb30.dll as my VendorLib. Do I have something setup incorrectly that it is ignoring VendorLib?

jyarnot
Posts: 6
Joined: Tue 27 May 2008 15:48

Found an answer, looking for an alternative

Post by jyarnot » Mon 06 Oct 2008 18:51

Okay, I found a way to get this to work but it required a change and recompile to dbxsda40.dll and it's only a fix for people who are in my situation (have 3.1 an 3.5 registered on computer and want to access 3.1). What I am wondering is if there is a way to tell sda to use 3.1 (cv30) as default? Like my maxdatabase question from before (http://devart.com/forums/viewtopic.php?t=12600) is there a 'Custom String=CompactVersion=cv30' that can be set?

I can tell you very specifically what's happeing in the code if you would like, just not sure the forum is the place to post that.

Challenger
Devart Team
Posts: 925
Joined: Thu 17 Nov 2005 10:53

Post by Challenger » Tue 07 Oct 2008 05:25

I can tell you very specifically what's happeing in the code if you would like, just not sure the forum is the place to post that.
There is no need in writing this information. We will consider adding additional connection parameter.

Dimon
Devart Team
Posts: 2910
Joined: Mon 05 Mar 2007 16:32

Post by Dimon » Thu 13 Nov 2008 14:50

To specify the SQL Server Compact Edtion version you should set the TCRSQLConnection.VendorLib property.
Set this property to 'sqlceoledb31' to use version 3.1 or to 'sqlceoledb35' to use version 3.5.

Post Reply