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