這幾天做了一個程序,VS 2005 + SQL Server Express,仔細查閱文檔,發現 SQL Server Express 支持 XCOPY 部署方式,也就是說,只要目標計算機有了 SQL Server Express,那麼只需要把數據庫拷貝過去,可以在程序的同一個目錄中,然後在連接字符串中配置 AttachDBFileName 參數即可。數據庫會自動掛接到 SQL Server Express 中,運行完後自動 Deattch。感覺不錯,照貓畫虎,結果出現了一個錯誤:“數據庫已被壓縮,無法建立,需要解壓縮”。暈死,什麼時候壓縮了?莫非是 Shinrk 的問題?搞了 n 個小時,無解,睡覺。
次日再戰,查閱資料無解,查閱 Internet 無解,想放棄,又捨不得。無意中發現,在管理界面中 Attach 數據庫居然也是這個錯誤,而在原先目錄中的數據庫居然沒問題。把數據庫拷貝到程序目錄(在 D: 盤,SQL Server Express 安裝在 C: 盤)就會出錯。不會是這個問題吧?
將程序目錄移動到 C 盤,居然一切正常,然後徹底暈死。難道自動掛接數據庫必須在 C 盤???
另,如果將數據庫文件設置為只讀,則無論在哪個盤都可掛接,只是成為只讀數據庫。
雖說解決了問題,可是不懂原理,是 Bug,還是我的系統問題?
其實,Sybase 的 SQL Anywhere 真的不錯,在啟動數據庫的時候才啟動數據庫管理系統,系統運行結束,數據庫管理系統自動結束,如果 SQL Server Express 也支持這個功能就好了,我可不喜歡不用數據庫的時候還有一個 SQL Server 服務在運行。Access 連存儲過程都不支持,微軟,想說愛你並不容易。