SQL CE Binaries - Details

Many times developers get puzzled on which exact set of binaries one should consume in their application.  There is also a misconception that SQL CE engine is too big in size.  This may be because there was no effort from our side to clarify on “Which binary is for what purpose?”.  So, here it goes:

 

image

 

The color coding is:

Thick Blue – Mandated Components

Lavender – Optional Components – Pick by your access model like C/C++/native Vs C#/VB.NET/.NET/Managed

Green – Optional Components – Pick by your scenario

 

The following table shows the mapping between the components (box in the above picture) to a binary name:

Component Name Binary Name Remarks
Storage Engine sqlcese35.dll None
Query Processor sqlceqp35.dll None
OLEDB Provider sqlceoledb35.dll None
DB Utilities sqlcecompact35.dll None
Managed Extensions sqlceme35.dll None
ADO.NET Provider – Also known as ADO.NET v2 Provider System.Data.SqlServerCe.dll None
Merge Replication sqlceca35.dll Client Agent
Remote Data Access sqlceca35.dll Client Agent
Sync Services Microsoft.Synchronization.Data.SqlServerCe.dll Client Sync Provider
  Microsoft.Synchronization.Data.dll Sync Common
  Microsoft.Synchronization.Data.Server.Dll Server Sync Provider
LINQ/SQL No extra binary :) None
LINQ/Entities - Also known as ADO.NET v3 Provider, Entity Framework System.Data.SqlServerCe.Entity.dll Entity Provider

 

Here is the component grouping:

 

Component Group Composition
Core Engine Storage Engine (sqlcese35.dll) + Query Processor (sqlceqp35.dll)
Core Engine Native Core Engine + OLEDB Provider (sqlceoledb35.dll)
Core Engine Managed Core Engine + Managed Extensions (sqlceme35.dll) + ADO.NET Provider (System.Data.SqlServerCe.dll)
Sync Services Sync Common (Microsoft.Synchronization.Data.dll) + Client Sync Provider (Microsoft.Synchronization.Data.SqlServerCe.dll) + Server Sync Provider (Microsoft.Synchronization.Data.Server.dll)
Client Agent Client Agent (sqlceca35.dll)
Error Messages Error Messages (sqlceer35en.dll) – Replace ‘en’ with two letter locale name for the localized version
Database Utilities DB Utilities (sqlcecompact35.dll)

 

Finally, let us come down to what needs to be packaged when.

Scenario Description Package Requirements
Local Database with Native Code Core Engine Native
Local Database with .NET/Managed Code Core Engine Managed
Local Database with LINQ/SQL Core Engine Managed
Local Database with LINQ/Entities Core Engine Managed + Entity Provider
   
Local Database with Native Code, and Merge Replication – Ability to sync with backend SQL Server via IIS over HTTP/HTTPS Core Engine Native + Client Agent
Local Database with Native Code, and Remote Data Access (RDA) - Ability to pull/push data from/to with backend SQL Server via IIS over HTTP/HTTPS Core Engine Native + Client Agent
Local Database with Managed Code, and Merge Replication – Ability to sync with backend SQL Server via IIS over HTTP/HTTPS Core Engine Managed + Client Agent
Local Database with Managed Code, and Remote Data Access (RDA) - Ability to pull/push data from/to with backend SQL Server via IIS over HTTP/HTTPS Core Engine Managed + Client Agent
Local Database with Managed Code, and Sync Services Core Engine Managed + Sync Services
   
Database Maintenance Utilities – Ability to Compact, Repair, Verify a database + DB Utilities
   
Error Messages – Ability to get a error situation in the form of message than just error number + Error Messages

 

Notes:

1) Majority of this blog post is applicable to more than one SQL CE Version. 

2) Binary Names have version number encoded.  This post took a reference example as SQL CE v3.5.  Please replace ‘35’ in binary names with ‘30’ for SQL CE v3.0 Version, etc.

 

Hope that helps!

 

Namaskaram,

Laxmi Narsimha Rao Oruganti

Comments

  • Anonymous
    October 07, 2009
    The comment has been removed

  • Anonymous
    October 13, 2009
    Superb blog. It help me in solving the error great man...

  • Anonymous
    October 13, 2009
    Hello, This is that what I was looking for. Very good job. Thank You. BR Szymon

  • Anonymous
    October 15, 2009
    Can you help with which are in which redistributable? I can't find the replication binaries after installing 3.5 SP1 update.

  • Anonymous
    October 28, 2009
    I have a related question but in another dimension of this issue:  I am building my app on a 32-bit platform (under .Net with Any-CPU turned on) but it will be running under x86 or x64 depending on which platform the user is running on. When I download and install the SQL CE 3.5 installer, I get the 32-bit libraries but I can't install the 64-bit libraries on my desktop. So, how can I get the x64 binaries so that I can include them in my installer? Also, Steve Lasker's blog entry on x86/x64 support says to place the 32-bit binaries in binx86 and the 64-bit binaries in binx64 but his blog entry is fairly old (> 6 months ago).  Is this accurate?

  • Anonymous
    November 01, 2009
    Are you saying that Sync Services does not require Synchronization Framework? It appears from what I am reading that Sync Services is now part of MSF and that MSF requires an msi administrator install on the client. I am very eager to know whether Microsoft supports and will continue to support a version of Sync Services that does not require an administrator install on the client.