「SQL Server Express Edition と Compact Edition のどちらかを選択してください」と書いた後、数人の友人が SQL Server Compact Edition (sqlce) は ASP.NET をサポートしているかどうかを尋ねました。当時は確信が持てず、自分でテストしてみたら間違いなくうまくいきませんでしたが、これはおかしいと思いましたし、サポートしない理由はありませんでした。
今日、Steve Lasker のブログを読んで、ついに理解しました。
sqlce はデフォルトで ASP.NET をサポートしていないため、多くのユーザーが MS に要求を出し、常に苦情を申し立て、さらには脅迫も行っています (サポートさせてくれない場合は、XX 製品を使用します)。 Steve Lasker 氏はついに黙ってはいられず、このすべてを明らかにするために出てきました。
実際、sqlce の市場での位置づけは、主にスマート クライアントのオフライン データ ストレージと同期の問題を解決するためのものであり、非常に明確です。これについては、「SQL Server Express Edition と Compact Edition の選択」でも説明しています。したがって、Microsoft は Web サイト データベースとしての sqlce の使用シナリオを最適化していません。 Web サイトへのマルチユーザー アクセスとデータの同時実行環境では、sqlce のパフォーマンスは理想的ではなく、SQL Server Express と比較することはできません。したがって、Web サイトでは引き続き SQL Server Express または SQL Server データベースを使用することをお勧めします。 sqlce は組み込みデータベース エンジンであり、SQL Server Express はデータベース サービスであることを知っておく必要があります。 SQL Server 開発チームによって最近リリースされた Hosting Toolkit SQL Server は、SQL Server Express を Web サーバーに展開するのに役立ちます。
では、ASP.NET は sqlce をデータ ストレージとして使用できますか?できる!
デフォルトでは、ASP.NET ワーカー プロセスで SQL データベース接続を開くと、SQLCE はブロックされます。次のコードを使用してこの制限を削除できます。sqlce の名前が変更され、SQL Server Everywhere と呼ばれなくなったため、このコード行は RTM バージョンで変更されます。
AppDomain.CurrentDomain.SetData("SQLServerEverywhereUnderWebHosting", true) は
ASP.NETではsqlceのデータ同期機能が利用できないので注意が必要です。
つまり、靴がどんなに大きくても、足がどんなに大きくても、ASP.NET で sqlce を使用する必要がある場合は、その結果に注意してください。
参考:
ASP.net および IIS での SQL Server Compact Edition
SqlCeConnection クラス (System.Data.SqlServerCe)