在我寫了《在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 ServerTeam Dev最近發布的Hosting Toolkit SQL Server可以協助你在Web伺服器上部署SQL Server Express。
那麼,ASP.NET到底能不能使用sqlce作為資料存放區呢?可以!
預設情況下,在ASP.NET的背景工作處理序中開啟sqlce的資料庫連接時,sqlce將被封鎖。你可以通過下面的代碼解除這個限制:
AppDomain.CurrentDomain.SetData("SQLServerCompactEditionUnderWebHosting", true)
要注意的是,在ASP.NET中不能使用sqlce的資料同步功能。
總之,多大的鞋配多大的腳,大家還是不要在ASP.NET中使用sqlce,如果偏要用,那請注意後果了!
參考:
SQL Server Compact Edition under ASP.net and IIS
SqlCeConnection Class (System.Data.SqlServerCe)