述說(shuō)ADO參數(shù)問(wèn)題相關(guān)解讀
ADO參數(shù)為研發(fā)數(shù)據(jù)庫(kù)的技術(shù)人員對(duì)Team System承諾,提供相關(guān)工具,這樣可以為整個(gè)軟件開(kāi)發(fā)周期少了不少?gòu)澛?,降低工作的?fù)雜性,我認(rèn)為Vs.Net 2010只會(huì)使我們的工作更簡(jiǎn)單和更輕松。
一般都依賴于已經(jīng)存在的用戶數(shù)據(jù)庫(kù)。創(chuàng)建數(shù)據(jù)庫(kù)的工作當(dāng)然可以用SQL Server提供的SQL EnterpriseManager工具來(lái)完成,但是,如果能夠提供一種定制的數(shù)據(jù)庫(kù)管理工具,專門管理應(yīng)用系統(tǒng)需要的數(shù)據(jù)庫(kù)及其設(shè)備,ADO參數(shù)對(duì)用戶來(lái)說(shuō)無(wú)疑更加理想。
其中NAME和SIZE這兩個(gè)參數(shù)都很容易得到,麻煩的是物理名PHYSNAME和虛擬設(shè)備號(hào)VDEVNO這兩個(gè)ADO參數(shù)。前者要求是一個(gè)服務(wù)器上的物理文件全路徑名;后者要求在1~255之間找一個(gè)沒(méi)有被別的設(shè)備占用的號(hào)碼。而在編寫數(shù)據(jù)庫(kù)管理程序時(shí),用戶的服務(wù)器上有哪些設(shè)備號(hào)已經(jīng)被占用,SQLServer裝在哪個(gè)驅(qū)動(dòng)器上,都是無(wú)法預(yù)料的。
雖然,使用SQLServer的管理工具SQLEnterpriseManager,可以非常方便地創(chuàng)建、刪除數(shù)據(jù)庫(kù)設(shè)備,或者擴(kuò)大一個(gè)已經(jīng)存在的數(shù)據(jù)庫(kù),也可以非常方便地創(chuàng)建、刪除或者修改一個(gè)數(shù)據(jù)庫(kù),但是,這個(gè)工具仍然要求我們輸入很多不太常用的參數(shù),界面稍顯復(fù)雜,為了實(shí)現(xiàn)這樣的目標(biāo),我們必須想辦法解決SQL語(yǔ)句中的參數(shù)設(shè)置問(wèn)題。
創(chuàng)建設(shè)備的ADO參數(shù)
創(chuàng)建設(shè)備的語(yǔ)句即前面提到的DISKINIT語(yǔ)句,為了簡(jiǎn)化問(wèn)題,我們可以指定與數(shù)據(jù)庫(kù)名相同的設(shè)備文件名,并將設(shè)備文件保存在master設(shè)備所在的子目錄中。數(shù)據(jù)庫(kù)名是在設(shè)計(jì)應(yīng)用程序時(shí)已經(jīng)確定;而master設(shè)備所在的子目錄,可以從系統(tǒng)表sysdevices中查詢得到。這樣,設(shè)備文件的物理名參數(shù)就確定下來(lái)了,虛擬設(shè)備號(hào)的問(wèn)題則比較復(fù)雜,因?yàn)閟ysdevices系統(tǒng)表中沒(méi)有“虛擬設(shè)備號(hào)”這樣一個(gè)字段,因此,必須另想辦法。#t#
對(duì)SQLServer的系統(tǒng)存儲(chǔ)過(guò)程sp_helpdevice進(jìn)行分析之后,我們發(fā)現(xiàn),虛擬設(shè)備號(hào)是“隱藏”在sysdevices系統(tǒng)表的low字段中的,借助另一個(gè)系統(tǒng)表spt_values,可以找到每個(gè)設(shè)備的虛擬設(shè)備號(hào)。這樣,我們只需要在一個(gè)循環(huán)中找一下某個(gè)設(shè)備號(hào)是否存在于ADO參數(shù)中,就可以確定我們現(xiàn)在可用的虛擬設(shè)備號(hào)。至于數(shù)據(jù)庫(kù)設(shè)備的大小,我們不妨設(shè)得大一些,或者讓用戶指定一下也可以。