服务器 频道

实现自动安装SQL Server数据库

  【IT168 服务器学院】下面简单介绍一下如何在工程中添加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)和内容文件(content files)两项。
  
  4. 添加合并模块(Merge Moudle),选择浏览,指定到你的MSDE的MSM文件夹,选则MSM和msm\1033下的所有的文件(REPL.MSM、REPL_RES.MSM、 DMO_RES.MSM和DMO.MSM可以不选),打开。
  
  5. 设置安装工程的属性(Properties)中的SearchPath,指定为你的MSM所在路径(这时需要添加两个:path\MSM和path\MSM\1033)。
  
  6. 设置关于安装程序的其他属性咱们暂且不提,这是可以对你的安装工程进行编译了,当编译通过后,你可以在c:\MySetup1\Debug\看到你的打包工程MySetup.msi.
  
  7. 这是工程打包告一段落,下面我们需要修改打好的安装包,使它可以在安装完程序后自动安装MSDE的一个实例(假设实例名为:MyServer)。现在我们需要用到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.其他的参数请参见:http://support.microsoft.com/?id=810826和http://support.microsoft.com/default.aspx?scid=kb;en-us;281983
  
  9. 所有的参数中有关密码的属性,我没有成功,就是SqlSaPwd,这个参数是和SqlSecurityMode一起使用的,但是我一直没有设置成功,密码总是为空的,不知何故!
  
  10. 选择InstallExecuteSequence这个table,找到SetPropSQLMSDEInstalled这个Action,修改206为102;找到RemoveExistingProducts,修改1525为6601.保存,退出!
  
  这时,在没有SQL环境的机器上运行你的安装包,在程序安装完后,会自动安装MSDE的MyServer实例,并在重起机器后,自动启动Sql Server的实例。
  
  前一篇中介绍了如何连同Sql Server的桌面版本一同打包到安装程序的简单步骤,这里还想就自己对于:发布程序到已经有SQL环境的计算机时,自动使用SQL的Osql来恢复指定的数据库到你的SQL Server的Date中。
  
  首先,在c:\创建一个临时目录,例如c:\TempBD ,拷贝Osql.exe到目录下,拷贝你的数据库备份(TruckDB)到目录下;在目录下分别创建Restore.bat和Restore.txt文件,内容如下:
  
  1. Restore.bat文件内容:
  
  osql -E -S -i C:\TempDB\Restore.txt
  
  2. Restore.txt文件内容:
  
  use master
  
  if exists (select * from sysdevices where name=''TruckDB'')
  
  EXEC sp_dropdevice ''TruckDB''
  
  Else
  
  EXEC sp_addumpdevice ''disk'',''TruckDB'', ''C:\Program Files\Microsoft SQL Server\MSSQL\Data\TruckDB.mdf''
  
  restore database TruckDB
  
  from disk=''c:\TempDB\TruckDB''
  
  with replace
  
0
相关文章