0

我想.bak在 InnoSetup 中恢复一个 SQL Server 备份文件。

这是我使用的代码:

try
    ExtractTemporaryFile ('mydb.bak');
    ADOConnection := CreateOleObject('ADODB.Connection');
    ADOConnection.ConnectionString := 
      'Provider=SQLOLEDB;' +               // provider
      'Data Source=DESKTOP-UE6ST1P\RMPRO;' +   // server name
      'Initial Catalog=master ;' +       // default database
      'User Id=sa;' +                // user name
      'Password=mypass;';                   // password
    
    ADOConnection.Open;
    try

      ADOCommand := CreateOleObject('ADODB.Command');
      ADOCommand.ActiveConnection := ADOConnection;
      ADOCommand.CommandText := 'RESTORE DataBase mydb FROM DISK = ' + QuotedStr(ExpandConstant('{tmp}\mydb.bak'));
      ADOCommand.CommandType := adCmdText;
      ADOCommand.Execute(NULL, NULL, adCmdText or adExecuteNoRecords);      
    finally
      ADOConnection.Close;
    end;
  except
    MsgBox('Error', mbError, MB_OK);
  end;
end;

当我运行此代码时出现此错误

例外:Microsoft OLE DB Provider for SQL Server:无法打开备份设备“C:\Users\sina\AppData\Local\Temp\is-QADA6.tmp\mydb.bak”。操作系统错误 5(拒绝访问)。

如何处理 InnoSetup 中的访问被拒绝?我在“以管理员身份运行”中运行设置并关闭 UAC,但我仍然遇到此问题。

4

0 回答 0