# Microsoft SQL Server Compact

Microsoft SQL Server Compact (SQL CE) ist ein kompaktes, relationales Datenbanksystem, das sowohl für den Einsatz in tragbaren Geräten als auch für den Desktopbereich konzipiert wurde.
Es handelt sich um ein eingebettetes Datenbanksystem. Das System wird also nicht als eigenständige Software installiert, sondern besteht im Wesentlichen aus einer Assembly, die in die Anwendung eingebunden wird. Diese Art von Datenbanksystem erspart also Installation, Betrieb und Betreuung eines separaten Datenbankserver-Dienstes, der permanent Ressourcen verbrauchen würde, wobei eventuell anfallende Verwaltungsaufgaben, wie z. B. die Einführung zusätzlicher Attribute oder Tabellen bei Versionswechsel, automatisiert aus der Anwendung heraus erledigt werden müssen.
Dies macht den entscheidenden Unterschied gegenüber konventionellen Datenbanken. Durch Einbinden der Bibliothek wird die Applikation um Datenbankfunktionalitäten erweitert, ohne auf einen externen Dienst angewiesen zu sein.
Anwendungsgebiete sind in der Regel dort, wo Datenbankfunktionalität benötigt wird, die Datenmenge nicht allzu groß ist und Zugriffe nur von einem Rechner aus erfolgen. Ein Anwendungsgebiet könnte z. B. ein Programm zur Analyse von Logdateien sein. Dieses liest eine Logdatei ein, zerlegt sie und speichert sie intern als Datensätze in einer Tabelle. Durch den Zugriff mittels SQL auf die Daten ist ein nahezu beliebiges Sortieren und Filtern möglich.
SQL CE wird von Microsoft kostenlos angeboten und verfügt über eine native 64-Bit-Unterstützung.
2013 gab Microsoft bekannt, SQL Server Compact nicht mehr weiterzuentwickeln. Anstelle von SQL Server Compact empfiehlt Microsoft die Verwendung von SQL Server LocalDB.

## Übersicht

Microsoft SQL Server Compact steht innerhalb der Entwicklung mit dem .Net-Framework zur Verfügung und hat einige Besonderheiten gegenüber anderen Datenbanken: Die Bibliothek ist nur wenige Megabyte (MB) groß. Jede Datenbank wird in einer einzelnen Datei mit der Endung .sdf gespeichert, was den Austausch zwischen verschiedenen Systemen erheblich vereinfacht. Die Datenbanken können bei Bedarf mit AES mit einer Schlüssellänge von 128 oder 256 Bit verschlüsselt werden.
SQL CE teilt sich einen Großteil der API mit den übrigen Microsoft SQL Server Editionen. Die Weiterentwicklung erfolgt aber inzwischen unabhängig von den größeren Editionen mit einer eigenständigen Versionszählung. Das Produkt beinhaltet ADO.NET Provider für den Zugriff auf die ADO.NET Schnittstellen. Es kann auch zusammen mit der aktuellen Version des ADO.NET Entity Framework eingesetzt werden. Darüber hinaus besitzt die Programmbibliothek interne Synchronisierungsmechanismen und unterstützt LINQ. SQL CE läuft innerhalb des Anwendungsprozesses und teilt sich denselben Speicherbereich mit allen anderen SQL CE Instanzen. Hierbei wurde von Microsoft ein besonderes Augenmerk auf den Speicherplatzbedarf gelegt.
Microsoft SQL Server Compact steht im Rahmen der Interoperabilität allen .NET-Sprachen zur Verfügung.

## Entwicklung und Verwaltung der Datenbank

Für die Verwaltung der Datenbank bei der Entwicklung gibt es eine spezielle Erweiterung "SQL Server Compact Toolbox" für Visual Studio 2010 oder Visual Web Developer, die über den Erweiterungsmanager zur Verfügung steht. Für die Verwendung auf dem Zielrechner kann man beispielsweise eine Datenbank mit Tabellendefinitionen, aber ohne Daten ausliefern, oder z. B. über ein Framework vom Programm erzeugen lassen.

## Einschränkungen

* nicht als Windows-Serverprozess ausführbar (läuft ausschließlich im Kontext der Anwendung)
* maximal 256 Verbindungen
* maximal 4 GB große Datenbanken