Nachdem ich „Wählen Sie zwischen SQL Server Express Edition und Compact Edition“ geschrieben hatte, fragten einige Freunde im Garten, ob SQL Server Compact Edition (sqlce) ASP.NET unterstützt? Ich war mir damals nicht sicher, ich habe es selbst getestet und es hat definitiv nicht funktioniert, aber ich fand es seltsam und es gab keinen Grund, es nicht zu unterstützen!
Ich habe heute Steve Laskers Blog gelesen und es endlich herausgefunden!
Da sqlce ASP.NET standardmäßig nicht unterstützt, haben viele Benutzer Anfragen an MS gestellt, sich ständig beschwert und sogar gedroht (wenn Sie nicht zulassen, dass es dies unterstützt, werde ich XX-Produkte verwenden). Steve Lasker konnte schließlich nicht still sitzen und kam heraus, um das alles zu klären.
Tatsächlich ist die Marktpositionierung von sqlce sehr klar, hauptsächlich um die Offline-Datenspeicher- und Synchronisierungsprobleme intelligenter Clients zu lösen. Dies wird auch in „Auswahl zwischen SQL Server Express Edition und Compact Edition“ erläutert. Daher hat Microsoft das Nutzungsszenario von sqlce als Website-Datenbank nicht optimiert. In einer Umgebung mit Mehrbenutzerzugriff auf die Website und Datenparallelität ist die Leistung von sqlce nicht ideal und kann nicht mit SQL Server Express verglichen werden. Daher wird empfohlen, dass die Website weiterhin SQL Server Express oder die SQL Server-Datenbank verwendet. Sie müssen wissen, dass sqlce eine eingebettete Datenbank-Engine und SQL Server Express ein Datenbankdienst ist. Jetzt kann Ihnen das kürzlich vom SQL Server-Entwicklungsteam veröffentlichte Hosting Toolkit SQL Server bei der Bereitstellung von SQL Server Express auf Ihrem Webserver helfen.
Kann ASP.NET also SQLCE als Datenspeicher verwenden? Dürfen!
Standardmäßig wird SQLCE blockiert, wenn eine SQLCE-Datenbankverbindung im ASP.NET-Workerprozess geöffnet wird. Sie können diese Einschränkung durch den folgenden Code entfernen. Diese Codezeile wird sich in der RTM-Version ändern, da sqlce umbenannt wurde und nicht mehr SQL Server Everywhere heißt:
AppDomain.CurrentDomain.SetData("SQLServerEverywhereUnderWebHosting", true)
ist zu beachten, dass die Datensynchronisationsfunktion von sqlce in ASP.NET nicht verwendet werden kann.
Kurz gesagt, egal wie groß die Schuhe sind, wie groß die Füße sind. Wenn Sie darauf bestehen, sollten Sie auf die Konsequenzen achten.
Referenz:
SQL Server Compact Edition unter ASP.net und IIS
SqlCeConnection-Klasse (System.Data.SqlServerCe)