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