在我寫了《在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可以協助你在Web服務器上部署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)