Installshield2009中使用osql.exe执行数据库脚本
Installshield2009中,执行数据库脚本,添加连接都很简单.
问题是:在不同的安装Feature下,有的Feature下需要使用OnSQLLogin,显示数据库连接对话框,用户输入数据库连接配置信息.而有的Feature下面,压根就不需要有数据库配置.而IDE环境配置的数据库连接,在什么Feature都会连接.谁可以告诉我,实现这个需求,用IDE SQL SCRIPTS里面的方式如何去做.
如下是我的解决方案:
1.导出数据库创建脚本
2.使用SQL2000提取的osql.exe去执行数据库脚本,可以在没有安装SQLSERVER的机器运行它,这个很方便,之前用过ADO的方式连接执行sql脚本,问题是要执行些系统存储过程,哪怕用SA的帐号和密码也不会成功(查询分析器里面运行成功),用osql.exe轻松搞定.
大概的IS代码如:
szMsg="Execute grant sql.";
SdShowMsg (szMsg, TRUE);
szScriptFile=INSTALLDIR^"Component\\grant.sql";
szPara="-S "+gSQLServer+" -U "+gSQLUser+" -P "+gSQLPass+" -i \""+szScriptFile+"\"";
WriteLog("szPara:"+szPara);
result= LaunchAppAndWait(SUPPORTDIR^"osql.exe",szPara,LAAW_OPTION_WAIT|LAAW_OPTION_HIDDEN);
Sprintf(szMsg,"Execute grant SQLScript result is %ld",result);
SUPPORT目录的osql.exe 下载:DOWNLOAD