问题描述
我正在使用Inno安装程序进行的安装程序更新sql server数据库。 我在cmd中写这行命令
sqlcmd -s myserverName -U sa -P MyPass -d myDataBase -i scriptAddress
它可以正常工作,我想在Inno设置中执行同样的操作,并编写以下代码行
procedure UpdateDataBase;
var
Param:String;
Kode : integer;
FileName :String;
begin
InstanceName:= DEF_INSTANCENAME;
InstancePass:= DEF_DBPASSWORD;
DataBaseName:= DEF_DATABASENAME;
serverName:= 'SINA-PC\RMPRO';
FileName:= 'C:\Update2008to2018.sql';
Param:= ' sqlcmd -S '+ServerName+' -U sa -P '+ InstancePass+ ' -d '+ DataBaseName+ ' -i '+
FileName;
if Exec('cmd.exe',param,'',SW_SHOW,ewWaitUntilTerminated,kode) then
begin
showMessage('Tamam');
end;
end;
解决方法
您可能应该直接调用sqlcmd.exe
而不是作为cmd.exe
的参数。因此,您应该有类似的东西(尚未测试,但应该可以开始使用):
pgm := 'sqlcmd.exe';
Param := '-S '+ServerName+' -U sa -P '+ InstancePass+ ' -d '+ DataBaseName+ ' -i '+ FileName;
if Exec(pgm,param,'',SW_SHOW,ewWaitUntilTerminated,kode) then
begin
MsgBox('Done.',mbInformation,MB_OK);
end;