人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

在.net安裝程序部署SQL Server數(shù)據(jù)庫(kù)

在.net安裝程序部署SQL Server數(shù)據(jù)庫(kù)

更新時(shí)間:2022-09-24 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

目錄

l 摘要
l 一般安裝程序的制作
l 在安裝程序中部署SQL Server數(shù)據(jù)庫(kù)
1. 通過(guò)調(diào)用osql來(lái)執(zhí)行數(shù)據(jù)庫(kù)腳本文件
2. 通過(guò)把腳本文件作為資源文件載入
3. 通過(guò)sp_attach_db來(lái)創(chuàng)建數(shù)據(jù)庫(kù)
l 總結(jié)

摘要
一個(gè)項(xiàng)目完成之后,安裝程序的制作是一個(gè)必要的過(guò)程。如果需要部署數(shù)據(jù)庫(kù),則使安裝程度的制作變得比較麻煩。使用visual studio.net可以非常方便的制作應(yīng)用程序以及部署程序中需要的數(shù)據(jù)庫(kù)。本文介紹了如何使用visual studio.net制作安裝程序,以及如何在安裝程序中部署數(shù)據(jù)庫(kù).本文假設(shè)您對(duì)ADO.net比較熟悉。

1.一般安裝程序的制作

Visual studio.net 提供了很強(qiáng)大并且非常便捷的安裝程序制作功能。一般的安裝程序制作可以參考如下步驟:
(1) 在Visual studio.net里面新建一個(gè)安裝項(xiàng)目(針對(duì)一般windows應(yīng)用程序)或者web安裝項(xiàng)目(針對(duì)基于web的應(yīng)用程序),比如叫SetupFace.
(2) 在解決方案里面的項(xiàng)目中的SetupFace上單擊右鍵,可以看到如下的視圖:

圖1 安裝程序中的視圖
視圖中出現(xiàn)的項(xiàng)目就是在制作安裝程序中需要涉及到的項(xiàng)目。
a. 文件系統(tǒng)部分提供了如何把需要安裝到目標(biāo)機(jī)可執(zhí)行程序以及運(yùn)行時(shí)需要的dll等打包到安裝程序中,同時(shí)也提供了如何在目標(biāo)機(jī)的桌面上和程序菜單中創(chuàng)建快捷方式以及文件夾等。
b. 注冊(cè)表部分提供了如何在目標(biāo)機(jī)的注冊(cè)表中添加相關(guān)的鍵值。
c. 文件類型提供了在目標(biāo)機(jī)上創(chuàng)建一個(gè)文件類型與應(yīng)用程序的關(guān)聯(lián),并可以為注冊(cè)的文件類型增加相關(guān)的右鍵菜單功能。比如注冊(cè)一個(gè).pdf的文件,使用你自己的程序打開(kāi)。
d. 用戶界面提供了在安裝過(guò)程中的界面,也可以根據(jù)自己的需要?jiǎng)?chuàng)建如自述文件,注冊(cè)碼校驗(yàn)等等功能。創(chuàng)建項(xiàng)目時(shí)已經(jīng)提供了一些基本的畫面。
e. 自定義操作部分主要提供了如何在安裝的不同階段中完成不同的工作。比如在安裝過(guò)程中創(chuàng)建數(shù)據(jù)庫(kù),在卸載過(guò)程中刪除數(shù)據(jù)庫(kù)等。
f. 啟動(dòng)條件部分提供了在安裝您的應(yīng)用程序前需要完成什么條件。Visual studio.net提供了可以在用戶計(jì)算機(jī)上搜索啟動(dòng)條件的功能。比如要求某個(gè)程序已經(jīng)安裝,可以通過(guò)搜索文件系統(tǒng)或則搜索注冊(cè)表來(lái)完成。
(3) 在視圖中選擇文件系統(tǒng),將看到如下畫面:

圖2 文件系統(tǒng)界面
如果您需要完成一個(gè)簡(jiǎn)單的安裝程序,在添加中選擇文件,選擇您以及編譯完成的應(yīng)用程序,Visual studio.net會(huì)自動(dòng)引入該應(yīng)用程序所需要的dll(只針對(duì)Visual studio.net開(kāi)發(fā)的應(yīng)用程序,其他的程序沒(méi)有試過(guò)),然后根據(jù)您的需要在用戶的”程序”菜單和用戶桌面創(chuàng)建快捷方式,然后把快捷方式的指向選擇為在應(yīng)用程序文件夾中導(dǎo)入的應(yīng)用程序即可。
(4) 最后,可以直接編譯該項(xiàng)目,安裝程序的制作即可完成。
如果需要更多的控制和修改安裝程序過(guò)程中的內(nèi)容,可以根據(jù)第(2)步中提到的不同視圖進(jìn)行編輯即可。如果需要制作web項(xiàng)目的安裝程序,在創(chuàng)建項(xiàng)目時(shí)選擇創(chuàng)建Web項(xiàng)目即可, 其他部分大同小異。也可以直接參考MSDN的如下鏈接:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsintro7/html/vxconATourOfVisualStudio.asp

2.在安裝程序中部署SQL Server數(shù)據(jù)庫(kù)

通過(guò)上面的介紹,一般應(yīng)用程序的制作非常容易,基本上就是把您的應(yīng)用程序拖入該安裝程序的過(guò)程。如果您的應(yīng)用程序的運(yùn)行需要數(shù)據(jù)庫(kù)的支持(如SQL Server),問(wèn)題就變得比較復(fù)雜一點(diǎn)。
主要有如下幾個(gè)方面的問(wèn)題:
(1) 如何在獲得安裝畫面的值,比如獲得用戶輸入的用戶名密碼。
(2) 如何設(shè)計(jì)一個(gè)程序來(lái)與數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行交互,創(chuàng)建新的數(shù)據(jù)庫(kù)。
如何在獲得安裝程序中的值,可以參看如下鏈接,這里我們不做太多的介紹。
<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsintro7/html/vxconATourOfVisualStudio.asp>
這個(gè)例子演示了如何在用戶界面自定義對(duì)話框要求用戶輸入信息,然后在自定義操作中把獲得的值通過(guò)CustomActionData來(lái)傳遞給自定義操作中的主輸出,最后在主輸出相面里面的程序里面來(lái)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。
通過(guò)對(duì)上面的例子的理解,基本上可以按照這個(gè)方式來(lái)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),它通過(guò)ADO.net執(zhí)行SQL語(yǔ)句來(lái)完成創(chuàng)建數(shù)據(jù)庫(kù)的。但是,如果有大量的數(shù)據(jù)表以及存儲(chǔ)過(guò)程需要建立,通過(guò)這個(gè)的方式非常麻煩。可不可以通過(guò)直接在SQL Server中創(chuàng)建相應(yīng)的數(shù)據(jù)庫(kù)生成腳本文件來(lái)直接完成呢?
我們有3個(gè)解決方案:
(1) 通過(guò)調(diào)用osql來(lái)執(zhí)行數(shù)據(jù)庫(kù)腳本文件
(2) 通過(guò)把相應(yīng)的腳本文件作為資源文件嵌入到項(xiàng)目中,然后通過(guò)ADO.net來(lái)執(zhí)行
(3) 通過(guò)調(diào)用SQL Server的sp_attach_db的存儲(chǔ)過(guò)程來(lái)直接附加數(shù)據(jù)庫(kù)。

2.1 通過(guò)調(diào)用osql來(lái)執(zhí)行數(shù)據(jù)庫(kù)腳本文件

從上面的例子我們已經(jīng)知道了如何傳遞值,那么我們只要在項(xiàng)目文件中程序段中執(zhí)行osql即可。
這里有一個(gè)問(wèn)題就是從什么地方找到數(shù)據(jù)庫(kù)的腳本文件。我們可以把腳本文件放到文件系統(tǒng)中,直接安裝到用戶機(jī)器上,并可以通過(guò)如下方法獲得到該文件的位置。
Assembly asm=Assembly.GetExecutingAssembly();
String setuppath=asm.Location;
這樣我們就可以知道腳本文件的位置了,下面的文件就是如何啟動(dòng)osql程序了。我們可以通過(guò)如下的代碼段來(lái)完成:
Process sqlprocess=new Process(); sqlprocess.StartInfo.FileName="osql.exe";
sqlprocess.StartInfo.Arguments=String.Format("-U {0} -P {1} -S {2} -i {3}",this.uid,this.pwd,this.serverip,this.spath); //uid 為用戶名,pwd為密碼,serverip為目標(biāo)服務(wù)器的ip,spath為數(shù)據(jù)庫(kù)腳本所在的路徑
sqlprocess.StartInfo.WindowStyle=ProcessWindowStyle.Hidden;
sqlprocess.Start();
sqlprocess.WaitForExit(); //等待程序執(zhí)行
sqlprocess.Close();

從上面可以知道,該方法必須要求安裝程序的客戶機(jī)以及安裝好了SQL Server才能使用(osql為安裝了SQL Server后提供的命令行下的程序).同時(shí)在實(shí)際的測(cè)試過(guò)程中,我們發(fā)現(xiàn)如果對(duì)于用戶在安裝程序是選擇帶有空格的路徑,如;C:\program files\yourappliaction\時(shí),安裝失敗。這個(gè)是一個(gè)比較嚴(yán)重的問(wèn)題。

2.2 通過(guò)把腳本文件作為資源文件載入

從前面的討論中我們可以看到,直接使用ADO.net執(zhí)行時(shí)比較麻煩,需要一句句執(zhí)行,如果使用腳本,數(shù)據(jù)庫(kù)中生成的腳本中有”GO”命令,在ADO.net中執(zhí)行時(shí)會(huì)出問(wèn)題。因此,根據(jù)對(duì)數(shù)據(jù)庫(kù)安裝腳本的分析,我們可以采用如下替代方案。
在數(shù)據(jù)庫(kù)的安裝過(guò)程中,無(wú)外乎如下幾個(gè)部分:
(1) 創(chuàng)建數(shù)據(jù)庫(kù)
(2) 創(chuàng)建表
(3) 創(chuàng)建試圖或者存儲(chǔ)過(guò)程
并且這三個(gè)部分是有先后順序的,順序不能顛倒,但是每個(gè)過(guò)程中沒(méi)有順序關(guān)系。在測(cè)試過(guò)程中我們發(fā)現(xiàn)可以在一條語(yǔ)句中創(chuàng)建多個(gè)表或者多個(gè)存儲(chǔ)過(guò)程。也就是說(shuō),我們可以把執(zhí)行過(guò)程按照上面的順序執(zhí)行就行了。并且我們把數(shù)據(jù)庫(kù)腳本作為資源文件嵌入,只要調(diào)入執(zhí)行就可以了,這樣就達(dá)到了簡(jiǎn)化創(chuàng)建一條條命令的過(guò)程。
獲得資源文件代碼如下:
Assembly Asm=Assembly.GetExecutingAssembly();
StreamReader str;
str=new StreamReader(Asm.GetManifestResourceStream(Asm.GetName().Name+"."+filename))// filename為你需要摘入的資源文件。作為資源文件時(shí),只要把文件導(dǎo)入到您的項(xiàng)目中,并且把生成操作改為嵌入的資源即可。
這里我們是直接獲得了該文件的文件流,因此直接把該流中的內(nèi)容讀入即可。
我們可以通過(guò)如下操作完成:
(1) 建立一個(gè)數(shù)據(jù)庫(kù)的鏈接,創(chuàng)建數(shù)據(jù)庫(kù). 比如: connectionstring=”server=127.0.0.1,uid=sa,pwd=pwd”;
(2) 重新創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)鏈接,該鏈接指向創(chuàng)建的數(shù)據(jù)庫(kù)。connectionstring=”server=127.0.0.1,uid=sa,pwd=pwd,database=yourdatabase”;
(3) 在新的鏈接中執(zhí)行創(chuàng)建數(shù)據(jù)表和數(shù)據(jù)存儲(chǔ)過(guò)程的代碼即可。

需要注意的是:不要在你的腳本中有GO命名,其他命令都可以直接執(zhí)行。
該方法的好處在于: 可以不要求安裝的目標(biāo)機(jī)上有SQL Server,也不存在因?yàn)槲募窂街杏锌崭竦膯?wèn)題而倒是安裝程序失敗。當(dāng)然,如果您的數(shù)據(jù)庫(kù)為Oracle或者DB2等,您也可以采用類似的方法來(lái)實(shí)現(xiàn)。

2.3 通過(guò)sp_attach_db來(lái)創(chuàng)建數(shù)據(jù)庫(kù)

通過(guò)上面的討論我們已經(jīng)很清楚如何安裝數(shù)據(jù)庫(kù)了。在安裝數(shù)據(jù)庫(kù)的過(guò)程中,我們除了可以通過(guò)數(shù)據(jù)庫(kù)腳本來(lái)創(chuàng)建數(shù)據(jù)庫(kù)之外,我們也可以通過(guò)SQL Server的系統(tǒng)存儲(chǔ)過(guò)程sp_attach_db來(lái)附加數(shù)據(jù)庫(kù)。
這里我們解決兩個(gè)問(wèn)題即可:
(1) 確定數(shù)據(jù)庫(kù)文件(.mdf和.ldf)的位置。
(2) 執(zhí)行存儲(chǔ)過(guò)程。

對(duì)于問(wèn)題1我們可以借鑒安裝數(shù)據(jù)的第一種方法,即把.mdf和.ldf通過(guò)文件系統(tǒng)安裝到目標(biāo)機(jī)上,然后通過(guò)
Assembly asm=Assembly.GetExecutingAssembly();
String setuppath=asm.Location;
獲得文件的路徑。

最后通過(guò)調(diào)用sp_attach_db 加上相應(yīng)的參數(shù)即可完成。
需要注意的是: 該方法也只能針對(duì)數(shù)據(jù)庫(kù)安裝在本機(jī)的情況下進(jìn)行安裝。

總結(jié)

本文通過(guò)介紹了三種不同的方法來(lái)在安裝程序是如何安裝數(shù)據(jù)庫(kù),同時(shí)也分析了不同的方法的優(yōu)劣之處,用戶可以根據(jù)自己的實(shí)際需要來(lái)選擇安裝方法。同時(shí),通過(guò)該方法的提出,用戶也可以完成在安裝程序是對(duì)數(shù)據(jù)庫(kù)的配置工作。


溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 五指山市| 湘潭县| 轮台县| 龙川县| 石泉县| 曲水县| 靖远县| 镇安县| 呼伦贝尔市| 高雄市| 尤溪县| 西乌| 玉溪市| 乐清市| 大埔区| 灌南县| 澳门| 大港区| 灵台县| 道孚县| 满洲里市| 云和县| 米易县| 商洛市| 宁强县| 乌鲁木齐县| 松阳县| 宁城县| 进贤县| 邵阳市| 建昌县| 平凉市| 象州县| 宁陵县| 霍山县| 永平县| 池州市| 广汉市| 徐汇区| 饶平县| 新疆|