电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

自動安裝sql server數(shù)據(jù)庫

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

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

當你的項目基本完成測試,準備發(fā)布的時候,制作一個用戶使用簡便的自動安裝包就成為編碼完成后的又一個需要解決的問題,工程開發(fā)的是否完滿,從安裝中,用戶應該會有個最初的體驗。

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

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

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

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

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

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

6. 設置關于安裝程序的其他屬性咱們暫且不提,這是可以對你的安裝工程進行編譯了,當編譯通過后,你可以在c:MySetup1Debug看到你的打包工程MySetup.msi。

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

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

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

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

這時,在沒有SQL環(huán)境的機器上運行你的安裝包,在程序安裝完后,會自動安裝MSDE的MyServer實例,并在重起機器后,自動啟動Sql Server的實例。

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

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

首先,在c:創(chuàng)建一個臨時目錄,例如c:TempBD ,拷貝Osql.exe到目錄下,拷貝你的數(shù)據(jù)庫備份(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

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

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

´重寫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ù)庫臨時文件

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ù)庫文件和臨時文件

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指定的文件夾的所有文件到目標文件夾(單層)。

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ù)庫,調(diào)用自動批處理。

´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

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

這時,生成的安裝包,將會在安裝完程序后,自動調(diào)用Installer類的方法,恢復你的TruckDB數(shù)據(jù)庫。

注意,TruckDB在生成的時候,應該備份保存到“C:Program FilesMicrosoft SQL ServerMSSQLData”下,便于恢復。

主站蜘蛛池模板: 在线钠离子分析仪-硅酸根离子浓度测定仪-油液水分测定仪价格-北京时代新维测控设备有限公司 | 电池挤压试验机-自行车喷淋-车辆碾压试验装置-深圳德迈盛测控设备有限公司 | 盐城网络公司_盐城网站优化_盐城网站建设_盐城市启晨网络科技有限公司 | 中天寰创-内蒙古钢结构厂家|门式刚架|钢结构桁架|钢结构框架|包头钢结构煤棚 | 304不锈钢无缝管_不锈钢管厂家 - 隆达钢业集团有限公司 | 房屋质量检测-厂房抗震鉴定-玻璃幕墙检测-房屋安全鉴定机构 | 顶呱呱交易平台-行业领先的公司资产交易服务平台 | 青岛代理记账_青岛李沧代理记账公司_青岛崂山代理记账一个月多少钱_青岛德辉财税事务所官网 | 高压贴片电容|贴片安规电容|三端滤波器|风华电容代理南京南山 | 合肥卓创建筑装饰,专业办公室装饰、商业空间装修与设计。 | 手表腕表维修保养鉴定售后服务中心网点 - 名表维修保养 | 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 钢格板|热镀锌钢格板|钢格栅板|钢格栅|格栅板-安平县昊泽丝网制品有限公司 | 昆山PCB加工_SMT贴片_PCB抄板_线路板焊接加工-昆山腾宸电子科技有限公司 | 压片机_高速_单冲_双层_花篮式_多功能旋转压片机-上海天九压片机厂家 | 奶茶加盟,奶茶加盟店连锁品牌-甜啦啦官网 | 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 物流公司电话|附近物流公司电话上门取货 | elisa试剂盒-PCR试剂盒「上海谷研实业有限公司」 | 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | 防火板_饰面耐火板价格、厂家_品牌认准格林雅 | 汽车整车综合环境舱_军标砂尘_盐雾试验室试验箱-无锡苏南试验设备有限公司 | 天津试验仪器-电液伺服万能材料试验机,恒温恒湿标准养护箱,水泥恒应力压力试验机-天津鑫高伟业科技有限公司 | 智能汉显全自动量热仪_微机全自动胶质层指数测定仪-鹤壁市科达仪器仪表有限公司 | 酒万铺-酒水招商-酒水代理| 无纺布包装机|径向缠绕包装机|缠绕膜打包机-上海晏陵智能设备有限公司 | 电子天平-华志电子天平厂家 | 上海阳光泵业制造有限公司 -【官方网站】 | 多功能真空滤油机_润滑油全自动滤油机_高效真空滤油机价格-重庆润华通驰 | 浙江宝泉阀门有限公司| 蒸汽吸附分析仪-进口水分活度仪|康宝百科| 档案密集柜_手动密集柜_智能密集柜_内蒙古档案密集柜-盛隆柜业内蒙古密集柜直销中心 | 门禁卡_智能IC卡_滴胶卡制作_硅胶腕带-卡立方rfid定制厂家 | 铁艺,仿竹,竹节,护栏,围栏,篱笆,栅栏,栏杆,护栏网,网围栏,厂家 - 河北稳重金属丝网制品有限公司 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 贵州自考_贵州自学考试网| 广州/东莞小字符喷码机-热转印打码机-喷码机厂家-广州瑞润科技 | 回转炉,外热式回转窑,回转窑炉-淄博圣元窑炉工程有限公司 | 高防护蠕动泵-多通道灌装系统-高防护蠕动泵-www.bjhuiyufluid.com慧宇伟业(北京)流体设备有限公司 | LED太阳能中国结|发光红灯笼|灯杆造型灯|节日灯|太阳能灯笼|LED路灯杆装饰造型灯-北京中海轩光电 | 河南15年专业网站建设制作设计,做网站就找郑州启凡网络公司 |