Share via


SQL Server Compact 3.5 64bit coming soon in Sp1...

A while back I posted some info about our intention to ship a native 64bit release: SQL Server Compact and 64bit support discussing how developers that use Compact on 64bit machines needed to use WoW mode.

I'm happy to say our 64bit release is coming soon. We've actually been working on this for a while.  It's not as easy as it might seem. There were several issues to make this work that cover all our scenarios including:

  • Private Deployment - including the dlls directly within your project
    • Which also includes how to load a private version of 64bit when 32 is centrally installed, or the other way around
  • Opening a database from multiple processes
  • Sharing the same database across devices, desktops and servers

We originally hoped to get this done with 3.5 RTM last November, but with the added complications, we just needed some extra time.  Because SQL Server Compact supports multiple processes opening the same database, and we wanted to share the same file format across device, desktop, 32 and 64bit machines, we had a lot of extra work to do to make sure all those bytes aligned.  When working on 64bit operating systems, there was some extra work we needed to do to make sure 32 and 64bit machines could support the same file format and X-Process communications.  In addition to the scenarios where developers use Compact as a "document format" that can be emailed or posted to a sharepoint site, we know developers often pre-create the .sdf on the server, sync it, then stream it down to the client (device, 32 bit desktop, 64bit desktop).

Ease of deployment
When building your application, how many processor types do you need to build?  Should your users need to know whether they should have to install the 32 or 64bit versions?  Devs - maybe.  End users?  Why should they know or care.  To ease this model, we took on some extra work to make sure developers could build one version of their application, including both the 32bit and 64bit version of Compact directly within their application.  This means developers can build one version, their users install one version, and at runtime our System.Data.SqlServerCe.dll will automatically load the appropriate engine.

So, the good news is:

  • We use the exact same file format between device, 32bit desktop, 64bit desktop scenarios.
  • You can also open the same database from a 32bit process and 64bit process. For those that don't know, Visual Studio actually runs in WoW mode, even on 64bit machines.
  • You can build one version of your app, and your users can install one version and it will "just work"

The not so good news

  • RTM and SP1 will not work completely interchangeably. While we caught the file format issue early, we didn't catch the shared memory issue early enough to fix in RTM. We use shared memory to open the same database across two processes. So, this means if you have an application that uses Compact 3.5 RTM, and another that uses Compact 3.5 SP1 (64 bit), you won't be able to open the same file at the same time. The first one will win. If you simply update the RTM app to SP1, all will be good.

What 64bit platforms are supported
As a general rule, AMD64 is our supported 64bit clients, so that does mean we won't have the IA64bit release.  Do many of you actually use the Itanium server boxes?  If so, would they be needed for your "web servers" where you're likely to need SQL Server Compact?

When will it ship?
Our 64bit release will be available as a Web Download when we ship SQL Server Compact SP1.  This will align with the Visual Studio 2008 SP1 and SQL Server 2008 ship dates.  So, not very far out.

Will there be a beta?
With the tight timeframes, we didn't see a lot of value in doing a beta.  The reality is by the time we get the beta up, there's really no time for feedback.  There's actually a lot involved in shipping betas between EULAs and such.  If you really, really, really want to give it a try before we ship, we are doing external validation with a few key customers, so just send me a note and we'll see what we can do.

What components will be available?
As many of you know, we ship several components. 

  • Device
  • Desktop
  • Server Tools for Merge Replication

Of course we don't yet have 64bit devices, so nothing here.  But we will be shipping the desktop and server tools in AMD64 bit versions.

Native /Managed
Lastly, I figured I'd be proactive on a comment around the complexities of shipping native 64bit code, and how this is a bit more complicated for developers to privately deploy native code.  Today, we do ship SQL Server Compact as a native engine for our storage engine and query processor.  There are other components such as the Merge Replication Client and a few other libraries that are native as well.  While this does make privately deploying Compact a bit more difficult, there are some definite benefits in perf, scalability and stability.  We've heard this over and over again that a database must be reliable, fast and consume minimal memory or what good is it. Otherwise, why not use XML?  Today, the best way to do this is through native code.  How long that remains to be true is a question for another day, but be assured we're fully aware of the pros and cons to native and managed code and we are working with our friends in the CLR team to bring the .NET platform forward so it can perform even better for devices and support managed code in more and more interesting scenarios.

In the meantime, know that we're "on it", and it's coming soon.

Steve

Comments

  • Anonymous
    May 13, 2008
    Hey Steve... If I am not mistaken, wasn't there a Visual Studio 2008 SP1 and SQL Server 2008 beta release yesterday or today.. does this release contain 64bit implementation? thanks

  • Anonymous
    May 13, 2008
    Yes, we did release the beta of the SP, including Compact, but we didn't include the 64bit release in this beta. Steve

  • Anonymous
    May 13, 2008
    Hi Steve, Will there be a simple tool (not replication) for SQLCE in SP1 that will allow someone to populate a CE database from SQL Server so that demo databases can be built faster.   I think this is something that is lacking in SQLCE for a while. Thanks, Ram

  • Anonymous
    May 13, 2008
    Yeah, it is definitely a frustration point for our customers and us.  We've actually had a “Data Migration Wizard” near ready since we shipped SQL Server Compact 3.1.  But it always seems to fall low on the priority list, so it still hasn’t received the QA pass we need to ship it.  Things like Platform Builder and 64bit support were higher in the list, but even those got delayed  So, at this point, we know we can’t get it “in” SP1, but we hope to ship it just after SP1 when the QA team has a moment to breath.  We may also ship a sample to help customers in the meantime, but we hear the pain and I hope we’ll have something out by the end of this summer… In the meantime, JP at Prime Works have got some great tools that do help in the meantime. Steve

  • Anonymous
    May 13, 2008
    Steve, I understand the tool is not yet tested, but would it be possible to get hands on with it.  I am in the process of desiging a new application (poc initially) for my client with VS2008/SQL2008/SQLCE and just creating sample databases is a real pain.   Thanks. Ram

  • Anonymous
    May 13, 2008
    Hi Ram, As much as I’d like to send this out, it’s just not practical as we just have too many lose ends we haven’t cleaned up.  However, here’s what I’ve been doing. If you use the Sync Designer in VS 2008, you can set the “data to download” to “entire table each time”.  This will simplify the tracking columns required on the server and you’ll just get your data.  Better yet, you can “synchronize it” when you want.   Sync Services will automatically create the schema required within SQL Server Compact, so you should be “good to go”. As soon as we can get the Data Migration Wizard out, we will.  …even if it’s pre-release.  But it’s just too preeee at this point. Steve

  • Anonymous
    May 15, 2008
    Thanks!  I used the sync designer and worked fine - for now this is good enough. I have stored 25,000 so far, but yet to modify my app to work with CE db.  Though CE supports image data type will one face any performance issues storing say 50,000 images @ 30KB/file. Thanks, Ram

  • Anonymous
    October 09, 2008
    Hi Steve, many SQL Compact users have trouble understanding the need to buy third party tools in order to migrate data from SQL Compact and SQL Server and vice versa.

  • Anonymous
    October 09, 2008
    What I meant to say was: Are there any news about the Data Migration Wizard or similar solutions?