巫宗賓
【摘 要】 基于MSDE桌面數(shù)據(jù)庫系統(tǒng)設計一個通用管理程序,完成對數(shù)據(jù)庫實體也就是賬套的新建、刪除、備份、恢復、注冊、反注冊、壓縮等功能。使非專業(yè)人士也可以專業(yè)的完成數(shù)據(jù)庫維護,同時提供標準的開發(fā)接口,縮短開發(fā)周期,降低開發(fā)成本。具有良好的市場推廣價值和創(chuàng)造經(jīng)濟價值。
【關鍵詞】 MSDE 賬套 備份 MIS 通用接口
【Abstract】 a general management program design of database system based on MSDE desktop, complete was the database entity account of new, delete, backup, restore, registration, the registration, compression and other functions. The non professionals can also professional complete database maintenance, while providing development interface standard, shorten the development cycle, reduce the cost of development. Has a good market popularizing value and create economic value.
【Keywords】 MSDE account backup MIS universal interface
MSDE是MS SQL Server的桌面免費版,它是一個基于 SQL Server 核心技術構(gòu)建的數(shù)據(jù)引擎,沒有圖型管理工具,通過命令行管理程序osql來連接的。當對數(shù)據(jù)庫系統(tǒng)的功能和性能提出新的需求時,則可以在不修改現(xiàn)有程序代碼的情況下,完全移植到SQL Server的平臺上運行。在管理信息系統(tǒng)的應用中,每一個程序都需要對數(shù)據(jù)庫賬套進行新建、刪除、備份、恢復、壓縮、信息注冊、反注冊等操作。設計一個通用的管理程序,通過簡單的操作完成數(shù)據(jù)庫管理并提供標準的開發(fā)接口。本設計通過利用動態(tài)SQL語句和Powerbuilder9.0作為開發(fā)工具,完成基于MSDE的數(shù)據(jù)庫管理軟件設計。
1 設計思路
通過查詢Master數(shù)據(jù)庫中的系統(tǒng)表sysaltfiles,檢測是否包含賬套信息數(shù)據(jù)庫的邏輯數(shù)據(jù)庫名稱Kt_acct,如果存在則直接連接Kt_acct數(shù)據(jù)庫,否則創(chuàng)建Kt_acct數(shù)據(jù)庫,同時創(chuàng)建用戶表T_user,帳套信息表T_acct和帳套文件存放信息表T_acct_info,并連接到Kt_acct數(shù)據(jù)庫進入賬套管理程序,對賬套進行維護,同時通過訪問Kt_acct數(shù)據(jù)庫獲取應用程序的賬套數(shù)據(jù)庫信息,連接到賬套數(shù)據(jù)庫建立新的應用。具體流程參見(圖1):
2 具體實現(xiàn)方法
該環(huán)節(jié)實現(xiàn)賬套信息數(shù)據(jù)庫的建立和表的創(chuàng)建,以及賬套的新建、刪除、備份、恢復、壓縮等功能的實現(xiàn)。程序主界面如(圖2)所示:
2.1 檢測賬套信息數(shù)據(jù)庫Kt_acct
通過查詢Master數(shù)據(jù)庫中的sysaltfiles表,檢測賬套信息數(shù)據(jù)庫的邏輯數(shù)據(jù)庫名稱t_acct_data是否存在,如果存在則連接Kt_acctk,否則創(chuàng)建Kt_acctk,其核心代碼如下:
Int flags=0;
select count(*) into: flags from sysaltfiles where name="kt_acct_data";
如果SQL語句執(zhí)行后flags>0表示數(shù)據(jù)庫已經(jīng)存在,否則表示數(shù)據(jù)庫不存在。
2.2 創(chuàng)建賬套信息數(shù)據(jù)庫Kt_acct
該環(huán)節(jié)通過構(gòu)建動態(tài)SQL語句并執(zhí)行SQL語句完成數(shù)據(jù)庫Kt_acct的創(chuàng)建。定義字符串變量ls_sql,構(gòu)建一個動態(tài)SQL語句賦予變量ls_sql,在SQL語句具中指出數(shù)據(jù)庫主文件kt_acct_data.mdf和數(shù)據(jù)庫日志文件kt_acct_log.ldf,通過執(zhí)行變量ls_sql中的語句完成數(shù)據(jù)庫創(chuàng)建,其核心代碼如下:
string ls_sql=””;
ls_sql="create database kt_acct on( name=kt_acct_data,filename = 'd:\kt_acct_data.mdf',size = 10) log on( name =kt_acct_log,filename ='d:\kt_acct_log.ldf',size = 10)" ;
execute immediate :ls_sql using sqlca;
2.3 創(chuàng)建用戶表T_USER
該環(huán)節(jié)構(gòu)建一個動態(tài)SQL語句并執(zhí)行完成數(shù)據(jù)庫用戶信息表T_USER的創(chuàng)建,包含用戶名稱USERS字段和密碼字段PASS,并向表添加一個超級用戶Admin,密碼為空。其核心代碼如下:
string ls_createtable=””;
ls_createtable="create table t_user(users char(8) not null,pass char(16)null)";
execute immediate:ls_createtable using sqlca;
insert into t_user (users,pass)values ("admin","") using sqlca ;
2.4 創(chuàng)建賬套信息表T_acct
該環(huán)節(jié)構(gòu)建一個動態(tài)SQL語句,通過動態(tài)SQL語句生成數(shù)據(jù)庫表T_acct,并定義表字段kacctid為主鍵,其核心代碼如下:endprint
ls_createtable="create table [dbo].[t_acct] ([kacctid] [int] identity (1, 1) not null , [kacctnumber] [nvarchar] (50) collate chinese_prc_ci_as not null ,[kacctname] [nvarchar] (50) collate chinese_prc_ci_as not null ,[kdbname] [nvarchar] (100) collate chinese_prc_ci_as not null ,[kcompanyname] [nvarchar] (50) collate chinese_prc_ci_as not null ,[fdescription] [nvarchar] (50) collate chinese_prc_ci_as null,[kacctver] [char] (10) collate chinese_prc_ci_as not null ) on [primary]";
execute immediate:ls_createtable using sqlca;
ls_createtable="alter table [dbo].[t_acct] add constraint [pk_t_acct] primary key clustered ([kacctid]) on [primary]" ;
execute immediate:ls_createtable using sqlca;
2.5 創(chuàng)建數(shù)據(jù)庫文件存放信息表t_acct_info
該環(huán)節(jié)構(gòu)建一個動態(tài)SQL語句,通過動態(tài)SQL語句生成數(shù)據(jù)庫表,其中字段l_name存放數(shù)據(jù)庫文件邏輯名,字段,p_name存放數(shù)據(jù)庫文件完整路徑及文件名,字段f_g_name存放文件屬性,size和maxsize字段指定文件大小。其核心代碼如下:
ls_createtable="create table [dbo].[t_acct_info](l_name varchar(30),p_name varchar(1000),type varchar(10),f_g_name varchar(20) null,size bigint,maxsize bigint)";
execute immediate:ls_createtable using sqlca;
2.6 創(chuàng)建存儲過程
該環(huán)節(jié)創(chuàng)建兩個動態(tài)SQL語句,通過動態(tài)SQL語句生成存儲過程sp_ restore 和sp_dump,其中sp_ restore完成數(shù)據(jù)庫恢復,sp_dump取消數(shù)據(jù)庫記錄日志,為壓縮數(shù)據(jù)庫做準備,這兩個存儲過程供程序調(diào)用完成相關功能。核心代碼如下:
ls_createtable="create procedure sp_restore @bakfile nvarchar(1000) as insert into t_acct_info exec('restore filelistonly from disk = n'''+@bakfile+'''')";
execute immediate :ls_createtable;
ls_createtable="create procedure sp_dump @datafile nvarchar(50) as dump transaction @datafile with no_log backup log @datafile with no_log dbcc shrinkfile (2) dbcc shrinkfile (1) ";
execute immediate:ls_createtable;
3 賬套管理實現(xiàn)方法
該環(huán)節(jié)主要實現(xiàn)應用程序數(shù)據(jù)庫的新建、刪除、備份、恢復、數(shù)據(jù)壓縮、信息登記、賬套注冊以及賬套數(shù)據(jù)結(jié)轉(zhuǎn)等功能,充分體現(xiàn)簡單的操作方法和高效的管理的特點,當基于SQL SERVER2000應用的MIS開發(fā)成功以后,都會有一個存放所有數(shù)據(jù)的數(shù)據(jù)庫文件,通過SQL SERVER2000的工具將該數(shù)據(jù)庫文件導出生成一個SQL文件,這個文件包含數(shù)據(jù)庫的所有對象、數(shù)據(jù)以及對象間關系,把文件命名為:chs.sql。通過文件chs.sql可以完成行業(yè)賬套的新建和恢復等功能。
3.1 新建賬套
在登錄至管理界面之后選中新建功能,輸入帳套號,帳套名稱帳套數(shù)據(jù)庫路徑之后便能得到一個所需要管理的數(shù)據(jù)庫,至于公司名稱及帳套說明是對所需要管理的數(shù)據(jù)說明,以便用戶分清所要管理數(shù)據(jù)的特征。輸入信息完畢后,軟件提示等待信息,當帳套創(chuàng)建成功后有信息提示框彈出,如(圖3)所示。
其核心代碼如下:
string str_acctnumber=""http://恢復賬套名稱;
string ls_sql=""http://動態(tài)sql變量;
string ls_logicdata=""http://新數(shù)據(jù)庫mdf邏輯名稱;
string ls_logiclog=""http://新數(shù)據(jù)庫ldf邏輯名稱;
string ls_griphicmdf=""http://新數(shù)據(jù)庫mdf存放路徑及名稱;
string ls_griphicldf=""http://新數(shù)據(jù)庫ldf存放路徑及名稱;
string ls_olddatabase=""http://備份文件中數(shù)據(jù)庫名稱;
ls_sql="restore database "+str_acctnumber+" from "+ ls_olddatabase+" with recovery,move "+"'"+ls_logicdata+"' to '"+ls_griphicmdf+"',move "+"'"+ls_logiclog+"' to '"+ls_griphicldf+"'";endprint
execute immediate : ls_sql using tr_sqlca;//恢復數(shù)據(jù)庫;
3.2 刪除賬套
在登錄至管理界面之后選中賬套數(shù)據(jù)庫點擊刪除圖標,根據(jù)提示完成數(shù)據(jù)庫賬套刪除。該操作會刪除賬套信息數(shù)據(jù)庫中相關的記錄,同時會從物理上刪除行業(yè)數(shù)據(jù)庫的文件。其核心代碼如下:
string ls_exec//動態(tài)sql變量
string str_dbname=""http://數(shù)據(jù)庫名稱
ls_exec="sp_detach_db @dbname='"+str_dbname+"'";
execute immediate :ls_exec using tr_sqlca ;
3.3 備份賬套
在登錄至管理界面之后選中賬套數(shù)據(jù)庫點擊備份圖標,根據(jù)選擇備份路徑等,完成數(shù)據(jù)庫備份。其核心代碼如下:
string ls_path ,ls_use,ls_dbname
ls_use = "exec sp_dropdevice 'hotel'"
execute immediate : ls_use using tr_sqlca;
ls_use = "exec sp_addumpdevice 'disk'"+" , 'hotel' , "+" '"+ls_path+"'"
execute immediate : ls_use using tr_sqlca;
ls_use ="backup database "+ls_dbname+" to hotel"
execute immediate : ls_use using tr_sqlca;
ls_use = "exec sp_dropdevice 'hotel'"
execute immediate : ls_use using tr_sqlca;
3.4 恢復賬套
恢復功能是建立在備份數(shù)據(jù)基礎上的功能,這個功能的主要實現(xiàn)目的在于當數(shù)據(jù)丟失或誤刪時,能夠及時恢復數(shù)據(jù)。其核心代碼如下:
string str_bakfile=""
declare sp_ restore procedure for sp_ restore @bakfile=:str_bakfile;
execute sp_ restore;
close sp_ restore;
3.5 壓縮賬套
這項功能用于對不是經(jīng)常用的數(shù)據(jù)進行壓縮處理,這樣既保留了數(shù)據(jù)的完整性又避免了數(shù)據(jù)過多的占用空間資源。其核心代碼如下:
string str_datafile
declare sp_dump procedure for sp_dump @datafile=:str_datafile using sqlca;
execute sp_dump;
close sp_dump;
3.6 賬套注冊
該功能把數(shù)據(jù)庫實體登記到賬套管理數(shù)據(jù)庫,以方便應用程序訪問,如(圖4)所示:
其核心代碼如下:
if dw_2.update()=1 then
commit using sqlca;
if sqlca.sqlcode=0 then
messagebox("提示","注冊成功!")
dw_2.reset()
dw_2.insertrow(0)
dw_1.retrieve()
else
messagebox("提示","注冊失敗,請確定帳套名稱和公司名稱是否正確!")
end if
else
messagebox("提示","注冊失敗,請確定帳套名稱和公司名稱是否正確!")
rollback using sqlca;
end if
3.7 賬套反注冊
該功能取消數(shù)據(jù)庫實體在賬套管理數(shù)據(jù)庫的登記,這樣用用程序?qū)⒉荒軌蛟L問,如(圖5)所示:
其核心代碼如下:
if dw_1.getrow()>0 then
dw_1.deleterow(dw_1.getrow())
if dw_1.update()=1 then
commit using sqlca;
else
rollback using sqlca;
end if
end if
4 行業(yè)MIS訪問賬套
該功能完成賬套數(shù)據(jù)庫的訪問,可以完成行業(yè)軟件的開發(fā)。如(圖6)所示:
其核心代碼如下:
string ls_server//服務器名稱
string ls_accout//賬套名稱
sqlca.dbms = "mss microsoft sql server"
sqlca.database =ls_accout
sqlca.servername = ls_server
sqlca.logid = "sa"
sqlca.autocommit = false
sqlca.dbparm = ""
connect using sqlca;
5 結(jié)語
在數(shù)據(jù)庫應用管理程序的設計當中,最重要的是有以下幾點:(1)軟件消耗的資源不能太多;(2)設計管理軟件的時候要盡量避免復雜的操作和設計,以免給用戶帶來不必要的誤解,使用戶不能充分的理解該軟件的功能從而無法使用,所以設計應當盡量使其簡單化;(3)開發(fā)軟件時周期不能太長。所以該管理程序的開發(fā)應用,可以簡化開發(fā)流程,縮短開發(fā)周期以及實現(xiàn)便捷的數(shù)據(jù)庫管理方法,具有很高的實用價值和經(jīng)濟價值。
參考文獻:
[1]王蓉等.PowerBuild7.0應用開發(fā)技術詳解[M].電子工業(yè)出版社.2000.
[2]唐學忠等.SQL Server 2000數(shù)據(jù)庫教程[M].電子工業(yè)出版社.2000.
[3]Konrad King(美).譯者:杜大鵬等.SQL編程實用大全[M].中國水利水電出版社.2000.
[4]錢雪忠..數(shù)據(jù)庫原理及應用[M].北京郵電大學出版社.2007.
[5]Bain T.SQL server 2000數(shù)據(jù)倉庫與Analysis Services[M].中國電力出版社.2003.
[6]王珊.數(shù)據(jù)庫技術與聯(lián)機分析處理[M].北京科學出版社.1998.endprint
execute immediate : ls_sql using tr_sqlca;//恢復數(shù)據(jù)庫;
3.2 刪除賬套
在登錄至管理界面之后選中賬套數(shù)據(jù)庫點擊刪除圖標,根據(jù)提示完成數(shù)據(jù)庫賬套刪除。該操作會刪除賬套信息數(shù)據(jù)庫中相關的記錄,同時會從物理上刪除行業(yè)數(shù)據(jù)庫的文件。其核心代碼如下:
string ls_exec//動態(tài)sql變量
string str_dbname=""http://數(shù)據(jù)庫名稱
ls_exec="sp_detach_db @dbname='"+str_dbname+"'";
execute immediate :ls_exec using tr_sqlca ;
3.3 備份賬套
在登錄至管理界面之后選中賬套數(shù)據(jù)庫點擊備份圖標,根據(jù)選擇備份路徑等,完成數(shù)據(jù)庫備份。其核心代碼如下:
string ls_path ,ls_use,ls_dbname
ls_use = "exec sp_dropdevice 'hotel'"
execute immediate : ls_use using tr_sqlca;
ls_use = "exec sp_addumpdevice 'disk'"+" , 'hotel' , "+" '"+ls_path+"'"
execute immediate : ls_use using tr_sqlca;
ls_use ="backup database "+ls_dbname+" to hotel"
execute immediate : ls_use using tr_sqlca;
ls_use = "exec sp_dropdevice 'hotel'"
execute immediate : ls_use using tr_sqlca;
3.4 恢復賬套
恢復功能是建立在備份數(shù)據(jù)基礎上的功能,這個功能的主要實現(xiàn)目的在于當數(shù)據(jù)丟失或誤刪時,能夠及時恢復數(shù)據(jù)。其核心代碼如下:
string str_bakfile=""
declare sp_ restore procedure for sp_ restore @bakfile=:str_bakfile;
execute sp_ restore;
close sp_ restore;
3.5 壓縮賬套
這項功能用于對不是經(jīng)常用的數(shù)據(jù)進行壓縮處理,這樣既保留了數(shù)據(jù)的完整性又避免了數(shù)據(jù)過多的占用空間資源。其核心代碼如下:
string str_datafile
declare sp_dump procedure for sp_dump @datafile=:str_datafile using sqlca;
execute sp_dump;
close sp_dump;
3.6 賬套注冊
該功能把數(shù)據(jù)庫實體登記到賬套管理數(shù)據(jù)庫,以方便應用程序訪問,如(圖4)所示:
其核心代碼如下:
if dw_2.update()=1 then
commit using sqlca;
if sqlca.sqlcode=0 then
messagebox("提示","注冊成功!")
dw_2.reset()
dw_2.insertrow(0)
dw_1.retrieve()
else
messagebox("提示","注冊失敗,請確定帳套名稱和公司名稱是否正確!")
end if
else
messagebox("提示","注冊失敗,請確定帳套名稱和公司名稱是否正確!")
rollback using sqlca;
end if
3.7 賬套反注冊
該功能取消數(shù)據(jù)庫實體在賬套管理數(shù)據(jù)庫的登記,這樣用用程序?qū)⒉荒軌蛟L問,如(圖5)所示:
其核心代碼如下:
if dw_1.getrow()>0 then
dw_1.deleterow(dw_1.getrow())
if dw_1.update()=1 then
commit using sqlca;
else
rollback using sqlca;
end if
end if
4 行業(yè)MIS訪問賬套
該功能完成賬套數(shù)據(jù)庫的訪問,可以完成行業(yè)軟件的開發(fā)。如(圖6)所示:
其核心代碼如下:
string ls_server//服務器名稱
string ls_accout//賬套名稱
sqlca.dbms = "mss microsoft sql server"
sqlca.database =ls_accout
sqlca.servername = ls_server
sqlca.logid = "sa"
sqlca.autocommit = false
sqlca.dbparm = ""
connect using sqlca;
5 結(jié)語
在數(shù)據(jù)庫應用管理程序的設計當中,最重要的是有以下幾點:(1)軟件消耗的資源不能太多;(2)設計管理軟件的時候要盡量避免復雜的操作和設計,以免給用戶帶來不必要的誤解,使用戶不能充分的理解該軟件的功能從而無法使用,所以設計應當盡量使其簡單化;(3)開發(fā)軟件時周期不能太長。所以該管理程序的開發(fā)應用,可以簡化開發(fā)流程,縮短開發(fā)周期以及實現(xiàn)便捷的數(shù)據(jù)庫管理方法,具有很高的實用價值和經(jīng)濟價值。
參考文獻:
[1]王蓉等.PowerBuild7.0應用開發(fā)技術詳解[M].電子工業(yè)出版社.2000.
[2]唐學忠等.SQL Server 2000數(shù)據(jù)庫教程[M].電子工業(yè)出版社.2000.
[3]Konrad King(美).譯者:杜大鵬等.SQL編程實用大全[M].中國水利水電出版社.2000.
[4]錢雪忠..數(shù)據(jù)庫原理及應用[M].北京郵電大學出版社.2007.
[5]Bain T.SQL server 2000數(shù)據(jù)倉庫與Analysis Services[M].中國電力出版社.2003.
[6]王珊.數(shù)據(jù)庫技術與聯(lián)機分析處理[M].北京科學出版社.1998.endprint
execute immediate : ls_sql using tr_sqlca;//恢復數(shù)據(jù)庫;
3.2 刪除賬套
在登錄至管理界面之后選中賬套數(shù)據(jù)庫點擊刪除圖標,根據(jù)提示完成數(shù)據(jù)庫賬套刪除。該操作會刪除賬套信息數(shù)據(jù)庫中相關的記錄,同時會從物理上刪除行業(yè)數(shù)據(jù)庫的文件。其核心代碼如下:
string ls_exec//動態(tài)sql變量
string str_dbname=""http://數(shù)據(jù)庫名稱
ls_exec="sp_detach_db @dbname='"+str_dbname+"'";
execute immediate :ls_exec using tr_sqlca ;
3.3 備份賬套
在登錄至管理界面之后選中賬套數(shù)據(jù)庫點擊備份圖標,根據(jù)選擇備份路徑等,完成數(shù)據(jù)庫備份。其核心代碼如下:
string ls_path ,ls_use,ls_dbname
ls_use = "exec sp_dropdevice 'hotel'"
execute immediate : ls_use using tr_sqlca;
ls_use = "exec sp_addumpdevice 'disk'"+" , 'hotel' , "+" '"+ls_path+"'"
execute immediate : ls_use using tr_sqlca;
ls_use ="backup database "+ls_dbname+" to hotel"
execute immediate : ls_use using tr_sqlca;
ls_use = "exec sp_dropdevice 'hotel'"
execute immediate : ls_use using tr_sqlca;
3.4 恢復賬套
恢復功能是建立在備份數(shù)據(jù)基礎上的功能,這個功能的主要實現(xiàn)目的在于當數(shù)據(jù)丟失或誤刪時,能夠及時恢復數(shù)據(jù)。其核心代碼如下:
string str_bakfile=""
declare sp_ restore procedure for sp_ restore @bakfile=:str_bakfile;
execute sp_ restore;
close sp_ restore;
3.5 壓縮賬套
這項功能用于對不是經(jīng)常用的數(shù)據(jù)進行壓縮處理,這樣既保留了數(shù)據(jù)的完整性又避免了數(shù)據(jù)過多的占用空間資源。其核心代碼如下:
string str_datafile
declare sp_dump procedure for sp_dump @datafile=:str_datafile using sqlca;
execute sp_dump;
close sp_dump;
3.6 賬套注冊
該功能把數(shù)據(jù)庫實體登記到賬套管理數(shù)據(jù)庫,以方便應用程序訪問,如(圖4)所示:
其核心代碼如下:
if dw_2.update()=1 then
commit using sqlca;
if sqlca.sqlcode=0 then
messagebox("提示","注冊成功!")
dw_2.reset()
dw_2.insertrow(0)
dw_1.retrieve()
else
messagebox("提示","注冊失敗,請確定帳套名稱和公司名稱是否正確!")
end if
else
messagebox("提示","注冊失敗,請確定帳套名稱和公司名稱是否正確!")
rollback using sqlca;
end if
3.7 賬套反注冊
該功能取消數(shù)據(jù)庫實體在賬套管理數(shù)據(jù)庫的登記,這樣用用程序?qū)⒉荒軌蛟L問,如(圖5)所示:
其核心代碼如下:
if dw_1.getrow()>0 then
dw_1.deleterow(dw_1.getrow())
if dw_1.update()=1 then
commit using sqlca;
else
rollback using sqlca;
end if
end if
4 行業(yè)MIS訪問賬套
該功能完成賬套數(shù)據(jù)庫的訪問,可以完成行業(yè)軟件的開發(fā)。如(圖6)所示:
其核心代碼如下:
string ls_server//服務器名稱
string ls_accout//賬套名稱
sqlca.dbms = "mss microsoft sql server"
sqlca.database =ls_accout
sqlca.servername = ls_server
sqlca.logid = "sa"
sqlca.autocommit = false
sqlca.dbparm = ""
connect using sqlca;
5 結(jié)語
在數(shù)據(jù)庫應用管理程序的設計當中,最重要的是有以下幾點:(1)軟件消耗的資源不能太多;(2)設計管理軟件的時候要盡量避免復雜的操作和設計,以免給用戶帶來不必要的誤解,使用戶不能充分的理解該軟件的功能從而無法使用,所以設計應當盡量使其簡單化;(3)開發(fā)軟件時周期不能太長。所以該管理程序的開發(fā)應用,可以簡化開發(fā)流程,縮短開發(fā)周期以及實現(xiàn)便捷的數(shù)據(jù)庫管理方法,具有很高的實用價值和經(jīng)濟價值。
參考文獻:
[1]王蓉等.PowerBuild7.0應用開發(fā)技術詳解[M].電子工業(yè)出版社.2000.
[2]唐學忠等.SQL Server 2000數(shù)據(jù)庫教程[M].電子工業(yè)出版社.2000.
[3]Konrad King(美).譯者:杜大鵬等.SQL編程實用大全[M].中國水利水電出版社.2000.
[4]錢雪忠..數(shù)據(jù)庫原理及應用[M].北京郵電大學出版社.2007.
[5]Bain T.SQL server 2000數(shù)據(jù)倉庫與Analysis Services[M].中國電力出版社.2003.
[6]王珊.數(shù)據(jù)庫技術與聯(lián)機分析處理[M].北京科學出版社.1998.endprint