av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

自動(dòng)安裝sql server數(shù)據(jù)庫(kù)

瀏覽:40日期:2023-11-03 10:47:16

這段時(shí)間,手頭的項(xiàng)目接近收尾,以前不太注意的工程打包問(wèn)題卻慢慢凸現(xiàn)出來(lái),這里指的不單單是制作一個(gè)可以安裝的工程安裝包,還有關(guān)于缺少運(yùn)行環(huán)境時(shí)的數(shù)據(jù)庫(kù)實(shí)例的安裝和數(shù)據(jù)庫(kù)數(shù)據(jù)的安裝恢復(fù)。這里先把關(guān)于MSDE打包進(jìn)安裝程序的心得于大家分享,那么咱們廢話少說(shuō)。

當(dāng)你的項(xiàng)目基本完成測(cè)試,準(zhǔn)備發(fā)布的時(shí)候,制作一個(gè)用戶(hù)使用簡(jiǎn)便的自動(dòng)安裝包就成為編碼完成后的又一個(gè)需要解決的問(wèn)題,工程開(kāi)發(fā)的是否完滿(mǎn),從安裝中,用戶(hù)應(yīng)該會(huì)有個(gè)最初的體驗(yàn)。

下面簡(jiǎn)單介紹一下如何在工程中添加Microsoft SQL Server 2000 Desktop Engine (MSDE)的自動(dòng)安裝合并模塊MSM:

1. 首先你需要下載MSDE2000的sp3安裝包。可以從下面的鏈接去下載,URL: http://www.microsoft.com/sql/downloads/2000/sp3.asp

2. 下載完成,你可以安裝或者用ZIP解壓到本地硬盤(pán),將可以看到:Msi、MSM、Setup這3個(gè)目錄和setup等文件,其中的MSM文件夾中的東東就是本文要介紹的MSDE2000合并模塊。

3. 在你的工程中添加一個(gè)安裝工程(假設(shè)為MySetup1,路徑為c:MySetup1),按照正常的步驟添加工程輸出(Project Output),選擇輸出文件(primary output)和內(nèi)容文件(content files)兩項(xiàng)。

4. 添加合并模塊(Merge Moudle),選擇瀏覽,指定到你的MSDE的MSM文件夾,選則MSM和msm1033下的所有的文件(REPL.MSM、REPL_RES.MSM、 DMO_RES.MSM和DMO.MSM可以不選),打開(kāi)。

5. 設(shè)置安裝工程的屬性(Properties)中的SearchPath,指定為你的MSM所在路徑(這時(shí)需要添加兩個(gè):pathMSM和pathMSM1033)。

6. 設(shè)置關(guān)于安裝程序的其他屬性咱們暫且不提,這是可以對(duì)你的安裝工程進(jìn)行編譯了,當(dāng)編譯通過(guò)后,你可以在c:MySetup1Debug看到你的打包工程MySetup.msi。

7. 這是工程打包告一段落,下面我們需要修改打好的安裝包,使它可以在安裝完程序后自動(dòng)安裝MSDE的一個(gè)實(shí)例(假設(shè)實(shí)例名為:MyServer)。現(xiàn)在我們需要用到MS的一個(gè)工具ORCA,下載地址:http://support.microsoft.com/default.aspx?scid=kb;EN-US;255905安裝了orca后就可以利用這個(gè)工具對(duì)我們的MySetup1.msi進(jìn)行修改了。

8. 用ORCA打開(kāi)安裝包文件MySetup.msi,找到Property這個(gè)table,ADD Row 在Propetry中填入SqlInstanceName,value中填入實(shí)例名MyServer。其他的參數(shù)請(qǐng)參見(jiàn):http://support.microsoft.com/?id=810826和http://support.microsoft.com/default.aspx?scid=kb;en-us;281983

9. 所有的參數(shù)中有關(guān)密碼的屬性,我沒(méi)有成功,就是SqlSaPwd,這個(gè)參數(shù)是和SqlSecurityMode一起使用的,但是我一直沒(méi)有設(shè)置成功,密碼總是為空的,不知何故!

10. 選擇InstallExecuteSequence這個(gè)table,找到SetPropSQLMSDEInstalled這個(gè)Action,修改206為102;找到RemoveExistingProducts,修改1525為6601。保存,退出!

這時(shí),在沒(méi)有SQL環(huán)境的機(jī)器上運(yùn)行你的安裝包,在程序安裝完后,會(huì)自動(dòng)安裝MSDE的MyServer實(shí)例,并在重起機(jī)器后,自動(dòng)啟動(dòng)Sql Server的實(shí)例。

=======================================================================

前一篇中介紹了如何連同Sql Server的桌面版本一同打包到安裝程序的簡(jiǎn)單步驟,這里還想就自己對(duì)于:發(fā)布程序到已經(jīng)有SQL環(huán)境的計(jì)算機(jī)時(shí),自動(dòng)使用SQL的Osql來(lái)恢復(fù)指定的數(shù)據(jù)庫(kù)到你的SQL Server的Date中。

首先,在c:創(chuàng)建一個(gè)臨時(shí)目錄,例如c:TempBD ,拷貝Osql.exe到目錄下,拷貝你的數(shù)據(jù)庫(kù)備份(TruckDB)到目錄下;在目錄下分別創(chuàng)建Restore.bat和Restore.txt文件,內(nèi)容如下:

1. Restore.bat文件內(nèi)容:

osql -E -S -i C:TempDBRestore.txt

2. Restore.txt文件內(nèi)容:

use master

if exists (select * from sysdevices where name=´TruckDB´)

EXEC sp_dropdevice ´TruckDB´

Else

EXEC sp_addumpdevice ´disk´,´TruckDB´, ´C:Program FilesMicrosoft SQL ServerMSSQLDataTruckDB.mdf´

restore database TruckDB

from disk=´c:TempDBTruckDB´

with replace

其次,在你的工程中添加一個(gè)Installer Class:選中Project主工程,添加Installer Class,名稱(chēng)假定為installer1。選擇instller1的代碼頁(yè),添加下面的代碼:

Public Overrides Sub Install(ByVal stateSaver As System.Collections.IDictionary)

´重寫(xiě)install方法

Dim file As System.IO.File

If file.Exists('C:Program FilesMicrosoft SQL ServerMSSQLDataTruckDB_data.mdf') = True Then Exit Sub

MyBase.Install(stateSaver)

Dim CheckedDir As System.IO.Directory

If CheckedDir.Exists('C:Program FilesMicrosoft SQL ServerMSSQLData') = False Then

CheckedDir.CreateDirectory('C:Program FilesMicrosoft SQL ServerMSSQLData')

End If

Dim FullPath As String

Dim Asm As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()

Dim strConfigLoc As String

strConfigLoc = Asm.Location

Dim strTemp As String

strTemp = strConfigLoc

´提取安裝路徑

strTemp = strTemp.Remove(strTemp.LastIndexOf(''), Len(strTemp) - strTemp.LastIndexOf(''))

´Copy DateBase to computer.

If CreatDIR(strTemp) = False Then

´失敗,反安裝

Me.Uninstall(stateSaver)

Exit Sub

Else

End If

If InstallDB(strTemp) = False Then

‘失敗,反安裝

Me.Uninstall(stateSaver)

Exit Sub

Else

End If

‘刪除數(shù)據(jù)庫(kù)臨時(shí)文件

DeleteDIR(“c:TempDB”)

DeleteDIR(strTemp “TempDB”)

End Sub

Public Overrides Sub Uninstall(ByVal stateSaver As System.Collections.Idictionary)

‘執(zhí)行反安裝

‘利用反射提取安裝路徑

MyBase.Uninstall(stateSaver)

Dim Asm As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()

Dim strConfigLoc As String

strConfigLoc = Asm.Location

Dim strTemp As String

strTemp = strConfigLoc

strTemp = strTemp.Remove(strTemp.LastIndexOf(“”), Len(strTemp) – strTemp.LastIndexOf(“”))

‘刪除數(shù)據(jù)庫(kù)文件和臨時(shí)文件

DeleteDIR(strTemp “TempDB”)

DeleteDIR(“c:TempDB”)

End Sub

Private Function DeleteDIR(ByVal path As String) As Boolean

‘刪除指定的文件夾

Dim dir As System.IO.Directory

If dir.Exists(path) = True Then dir.Delete(path, True)

End Function

Private Function CreatDIR(ByVal path As String) As Boolean

‘創(chuàng)建指定的文件夾

Dim Files As System.IO.File

Dim Dirs As System.IO.Directory

Try

If Dirs.Exists(“c:TempDB”) = False Then Dirs.CreateDirectory(“c:TempDB”)

‘copy Creat DB files

CopyFile(path “TempDB”, “C:TempDB”)

Return True

Catch

Return False

End Try

End Function

Private Sub CopyFile(ByVal SourceDirName As String, ByVal DestDirName As String)

‘copy指定的文件夾的所有文件到目標(biāo)文件夾(單層)。

Dim dir As System.IO.Directory

Dim File As System.IO.File

Dim sPath, oPath As String

Dim I As Integer

For I = 0 To dir.GetFiles(SourceDirName).Length – 1

sPath = dir.GetFiles(SourceDirName).GetValue(i).ToString

oPath = Microsoft.VisualBasic.Right(sPath, Len(sPath) – Len(SourceDirName))

File.Copy(sPath, DestDirName oPath, True)

Next

End Sub

Private Function InstallDB(ByVal path As String) As Boolean

‘安裝數(shù)據(jù)庫(kù),調(diào)用自動(dòng)批處理。

´Dim CheckedDir As System.IO.Directory

´If CheckedDir.Exists(“C:Program FilesMicrosoft SQL ServerMSSQLData”) = False Then

´CheckedDir.CreateDirectory(“C:Program FilesMicrosoft SQL ServerMSSQLData”)

´End If

Try

Shell(“c:TempDBRestore.bat”, AppWinStyle.Hide, True)

Catch

End Try

End Function

然后,在你的工程中添加一個(gè)安裝工程,取名為MySetup1,按照正常的步驟添加工程輸出(Project Output),選擇輸出文件(primary output)和內(nèi)容文件(content files)兩項(xiàng),再添加文件夾到application Folder,文件夾的Name為T(mén)empDB,再給文件夾TempDB添加文件:osql.exe,Restore.bat,Restore.txt,TruckDB(數(shù)據(jù)庫(kù)文件)。設(shè)定你的文件夾的properties的AlwaysCreate為T(mén)rue。對(duì)你的Setup工程進(jìn)行編譯。

這時(shí),生成的安裝包,將會(huì)在安裝完程序后,自動(dòng)調(diào)用Installer類(lèi)的方法,恢復(fù)你的TruckDB數(shù)據(jù)庫(kù)。

注意,TruckDB在生成的時(shí)候,應(yīng)該備份保存到“C:Program FilesMicrosoft SQL ServerMSSQLData”下,便于恢復(fù)。

主站蜘蛛池模板: 精品欧美一区二区三区免费观看 | 日本不卡一区二区 | 国产精品视频二区三区 | 色姑娘av | 国产精品久久久久久一区二区三区 | 精品国产乱码久久久久久88av | 最新中文字幕在线 | 亚洲国产精品成人无久久精品 | 中国美女av | 日本一道本 | 涩涩导航 | av无遮挡| 中文字幕 欧美 日韩 | 久久国产一区二区三区 | 亚洲乱码一区二区三区在线观看 | 成人欧美一区二区三区黑人孕妇 | 色综合一区二区三区 | 久久免费观看一级毛片 | 欧美日韩在线一区二区 | 午夜一区二区三区在线观看 | 日韩精品一区二区三区在线观看 | 亚洲成人www | 激情综合五月 | 国产成人综合亚洲欧美94在线 | 精品久久久久久亚洲精品 | 国产精品国产三级国产aⅴ中文 | 亚洲国产精选 | 亚洲精品乱码久久久久久按摩观 | 国产欧美日韩一区二区三区在线观看 | 国产精品视频在线播放 | 久久久久久久国产 | 国产精品日产欧美久久久久 | 国产精品三级久久久久久电影 | 亚洲网站在线观看 | 国产精品区一区二 | 国产免费一区二区 | 欧美成人一区二免费视频软件 | 日韩国产欧美视频 | 国产伦精品一区二区三区视频金莲 | 四虎影院在线观看免费视频 | 精品1区|