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