在我寫了《在SQL Server Express版和Compact版之間做選擇》之後,園子裡有些朋友問到SQL Server精簡版(sqlce)支不支援ASP.NET?當時我也不確定,我自己測試過確實不行,但是覺得怪怪的,沒有道理不支持啊!
今天看了Steve Lasker的blog,終於搞清楚了!
由於sqlce預設不支援ASP.NET,很多用戶因此對MS提出請求,不斷抱怨,甚至恐嚇(如果你不讓它支持,我就使用XX產品)。 Steve Lasker終於坐不住,出來澄清這一切
其實sqlce的市場定位非常明確,主要是為了解決智慧型客戶端的離線資料儲存與同步問題。這個在《在SQL Server Express版和Compact版之間做選擇》也有闡明了。因此,微軟並沒有針對sqlce作為Web網站資料庫的使用場景進行最佳化。在Web網站多用戶存取和資料並發的環境下,sqlce的效能不理想,跟SQL Server Express不能比。所以建議Web站點還是採用SQL Server Express或SQL Server資料庫。要知道sqlce是內嵌資料庫引擎,而SQL Server Express是資料庫服務。現在SQL Server開發團隊最近發布的Hosting Toolkit SQL Server可以協助你在網路伺服器上部署SQL Server Express。
那麼,ASP.NET到底能不能使用sqlce當資料儲存呢?可以!
預設情況下,在ASP.NET的工作進程中開啟sqlce的資料庫連線時,sqlce將會被封鎖。你可以透過下面的程式碼解除這個限制,這行程式碼在RTM版中會有所變,因為sqlce已經改名了,不再叫SQL Server Everywhere:
AppDomain.CurrentDomain.SetData("SQLServerEverywhereUnderWebHosting", true)
要注意的是,在ASP.NET中不能使用sqlce的資料同步功能。
總之,多大的鞋配多大的腳,大家還是不要在ASP.NET中使用sqlce,如果偏要用,那請注意後果了!
參考:
SQL Server Compact Edition under ASP.net and IIS
SqlCeConnection Class (System.Data.SqlServerCe)