Worauf beim SQL Server Compact Edition 3.5 zu achten ist

Der SQL Server CE ist die mobile Variante aus der SQL Server- Familie.

So braucht man nur wenige DLLs installieren und schon hat man eine lauffähige SQL-Server Umgebung auf seinem PC.

Auch braucht dieser keine ständige Wartung und nicht soviel Rechenleistung, da er keinen aktiven Dienst hat.

Aber wo Vorteile sind, werden die Nachteile auch nicht weit sein. Leider werden diese von Microsoft gerne verschwiegen,  und so trifft der naive Programmierer dann völlig erstaunt auf merkwürdige Limitierungen.

Gerade wenn Ihr mit dem Visual Studio in VB.NET, C# oder ähnlichem programmiert, sind diese doch massiv auffällig.

Eine praktische Einführung findet Ihr in meinem Video-Tutorial: Vb.net und SQL Server Compact Edition

Neue Objekte ohne Providerfactory-Unterstützung

Wie für jeden anderen Provider-Typ auch, gibt es beim Visual Studio extra für die Compact Edition eigene Provider-Objekte.

Vorausdenkte Softwareentwickler, die die Providerfactory einsetzen, werden hier allerdings ein böse Überraschung erleben.

Denn diese unterstützt (noch) nicht die CE-Objekte. Hier muss also doch ein bisschen getrickst werden.

Übrigens, falls Ihr die Compact-Edtion-Objekte vergebens sucht, müsst Ihr diese extra über „Verweis hinzufügen“ einbinden.

Keine echte 64-Bit Unterstützung

Der Server unterstützt keine 64-Bit Technologie.

Da aber alle 32-Bit Applikaitonen auch auf 64-Bit laufen, kann man dieses Problem umgehen, in dem man sein Programm, dass den Server nutzt, explizit als 32-Bit Programm kompiliert (siehe diesen Artikel)

keine umfassende Datentypen Unterstützung

Wenn man einfach versucht, anstelle des SQL Servers, die Compact Edition als Datenbank zu benutzen, kann es schnell zu bösen Überraschung kommen.

Da hier nicht die gleichen Datentypen zur Verfügung stehen, kann es beim Erstellen von Tabellen und Spalten schnell zu Fehlern kommen.

Hier findet Ihr eine Übersicht der gegenübergestellten Datentypen

Mangelnde Objekt- Unterstützung der SqlCeConnection

Beim Testen bin ich einige Male auf Fehler gestoßen, da einige Properties vonm SqlCeConnection- Objekt nicht unterstützt werden bzw. nicht zugewiesen werden dürfen.

So bin auch auf die völlig witzige Fehlermeldung gestoßen, dass CommandTimeouts NICHT Ungleich NULL sein darf!

Aber auch SqlCeConnection.GetSchema wird leider nicht unterstützt.

kein BulkCopy – Objekt

Für mich sehr ärgerlich war es, dass es kein aquivalentes Objekt für SQLBulkCopy gibt.

Dieser ermöglicht es, ganze Tabellen aus einer fremden Quelle in eine bestehende Datenbank-Tabelle des SQL-Servers hineinzuladen.

Langsamere Verarbeitung

Da dieser lokal läuft und keinen aktiven Dienst hat, ist die Compact Edition im Vergleich zu den größeren SQL-Server-Versionen wesentlich langsamer.

Wahrscheinlich gibt es noch einige Dinge mehr, die hier erwähnt werden könnten, mir sind sie nur nicht bisher aufgefallen. Kennt Ihr noch welche?

No Responses