SQL  Server无人值守安装      
随心工作室原创 未经授权,不得转载      
 
           
第1步:  判断SQL  Server是否已经安装过,如果已经安装,则启动服务器(第4步);  
           SQL  Server是否已经安装的判断方法:  
           HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Setup下的SQLPath键值  
           为SQL  Server的安装路径,判断安装路径是否存在就可以了。  
第2步:  SQL  Server的安装命令:  
           如果是桌面版本:  
           SETUPSQL.EXE  k=Dk  -s  -m  -SMS  -f1  sql70ins.iss  
           否则去掉参数:k=Dk  
第3步:  建一个循环,通过进程来判断安装程序的结束,一旦结束则启动服务器(第4步);  
第4步:  通过进程来判断SQL  Server服务是否已经启动,如果已经启动则做第5步;  
           假设SQL  Server的安装路径为c:\mssql7,数据文件路径为d:\mssql7,  
           则启动SQL  Server服务的命令为:  
           c:\mssql\binn\sqlservr.exe  -c  -dd:\mssql7\data\master.mdf    
                       -ed:\mssql7\log\errorlog  -ld:\mssql7\data\mastlog.ldf  
第5步:  导入数据库:  
           先把数据文件与日志文件拷入d:\mssql7\data下,  
           假设SQL  Server的安装路径为c:\mssql7,数据文件为d:\mssql7\data\test_data.mdf,  
           日志文件为d:\mssql7\data\test_log.ldf,数据库名为test,则数据库导入的命令为:  
           sp_attach_db  'test','d:\mssql7\data\test_data.mdf','d:\mssql7\data\test_log.ldf'  
           当然,如果要自动执行的话,把上面的语句写入文件(假设为c:\temp\attachdb.sql)中,  
           然后调用运行命令:  
           c:\mssql\binn\osql.exe  -S服务器名  -Usa  -P  -dMaster  -ic:\temp\attachdb.sql  
最后,当然您还可以加入一些自己的应用程序的安装,这样的话,您就可以发布您那完整的数据库应用  
           程序了,所有安装,包括数据库全部自动进行,不需要用户的干预。  
           如果不能正确安装,查看一下Windows目录下的sqlstp.log文件即可查出原因,对症下药就行了。  
             
   
 
以下为文件sql70ins.iss的内容:  
 
[InstallShield  Silent]  
Version=v5.00.000  
File=Response  File  
[DlgOrder]  
Dlg0=SetupMethod-0  
Count=11  
Dlg1=SdWelcome-0  
Dlg2=SdLicense-0  
Dlg3=SdRegisterUser-0  
Dlg4=CDKEYDialog-0  
Dlg5=SetupTypeSQL-0  
Dlg6=DlgCpSortUnicode-0  
Dlg7=DlgServerNetwork-0  
Dlg8=DlgServices-0  
Dlg9=SdStartCopy-0  
Dlg10=SdFinish-0  
[SetupMethod-0]  
Component-type=string  
Component-count=1  
Component-0=Local  
Result=1  
[SdWelcome-0]  
Result=1  
[SdLicense-0]  
Result=1  
[SdRegisterUser-0]  
szName=MSEMPLOYEE  
szCompany=Microsoft  
Result=1  
[CDKEYDialog-0]  
svCDKey=47324-777-7777777-22042  
Result=1  
[SetupTypeSQL-0]  
;Sql  Server程序的安装路径  
szDir=C:\MSSQL7  
Result=301  
;Sql  Server数据文件的路径  
szDataDir=C:\MSSQL7  
[DlgCpSortUnicode-0]  
;如果是简体中文字符集SortId设为199,是ISO/1252字符集SortId设为52  
;如果是简体中文字符集LCID设为2052,是ISO/1252字符集LCID设为1033  
SortId=52  
LCID=1033  
CompStyle=196609  
Result=1  
[DlgServerNetwork-0]  
NetworkLibs=4095  
TCPPort=1433  
TCPPrxy=Default  
NMPPipeName=\\.\pipe\sql\query  
Result=1  
[DlgServices-0]  
Local-Domain=3855  
AutoStart=61455  
Result=1  
[SdStartCopy-0]  
Result=1  
[License]  
LicenseMode=PERSERVER  
LicenseLimit=5  
[SdFinish-0]  
Result=1  
bOpt1=0  
bOpt2=0

解决方案 »

  1.   

    MSDE:msde可以很容易的和自己的程序发布。
    msde在sql server的msde目录中
    主要有两种方法,
    简单方法是使用setup.exe,复杂方法是实用\msde\msm下的合并模块,可以将其无缝的集成到自己的msi安装程序里,不过很麻烦。第一种方法主要是设置setup.ini和setup.exe的命令行参数。
    例如:1 [Options]
    2 TARGETDIR="D:\Setup\msde\binn"
    3 DATADIR="D:\Setup\msde\data"
    4 INSTANCENAME="我的实例名称"       
    5 SECURITYMODE="SQL"
    6 USEDEFAULTSAPWD注意:
    4 安装命名实例可以避免和用户计算机上可能存在的sql server发生冲突
    5 验证模式为混合模式,楼上兄弟就不用去改注册表了
    6 sa密码为空使用:F:\MSDE\SETUP /i F:\MSDE\setup\sqlrunXX.msi 
    就可以删除其他15个 sqlrunXX.msi了