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:
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 removedAnonymous
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 SzymonAnonymous
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.