Sql server 如何从wix installer 3.9中的.bak文件(数据库备份)还原数据库

Sql server 如何从wix installer 3.9中的.bak文件(数据库备份)还原数据库,sql-server,wix,windows-installer,wix3,Sql Server,Wix,Windows Installer,Wix3,我正在尝试使用wix安装程序3.9从.bak文件(数据库备份文件)还原sql server数据库。但不幸的是,它没有发生。这是我的试用码 <Fragment> <Binary Id="PHRBackupBin" SourceFile="Database/PHR.bak"></Binary> <!--<util:User Id="SQLUserSA" Name="[DB_USER]" Password="[DB_PASSWO

我正在尝试使用wix安装程序3.9从.bak文件(数据库备份文件)还原sql server数据库。但不幸的是,它没有发生。这是我的试用码

<Fragment>
    <Binary Id="PHRBackupBin" SourceFile="Database/PHR.bak"></Binary>    

    <!--<util:User Id="SQLUserSA" Name="[DB_USER]" Password="[DB_PASSWORD]"></util:User>-->
    <util:User Id="SQLUserSA" Name="sa" Password="sa"></util:User>

<DirectoryRef Id="INSTALLFOLDER">
  <Component Id="SqlComponent" Guid="8A1C82DB-1DD3-4FB5-8600-4F370FE1E04B">
      <Condition>NOT Installed</Condition>
      <sql:SqlDatabase Id="SqlServerDatabase" Database="PHR" Server="." CreateOnInstall="yes" DropOnUninstall="yes" User="SQLUserSA" ContinueOnError="no" Instance="SQLEXPRESS">          
      <sql:SqlScript Id="PHRBackup" ExecuteOnInstall="yes" ExecuteOnUninstall="no" BinaryKey="PHRBackupBin" ContinueOnError="no" />
    </sql:SqlDatabase>
    <CreateFolder/>
  </Component>
</DirectoryRef>

<ComponentGroup Id="DatabaseConfiguration">
  <ComponentRef Id="SqlComponent"></ComponentRef>
</ComponentGroup>

未安装

如果我将文件替换为.sql(sql脚本)文件,则上述安装程序将成功运行。我还尝试编写一个脚本文件来恢复数据库,但没有成功。请问社区如何从wix安装程序运行.bak文件


提前感谢

很遗憾,您将无法使用bak文件还原它。这不是一个脚本(sql:SqlScript组件需要这个脚本),这是一个不同的备份文件

.bak文件通常是在SQL Server中创建的本机备份文件

一个.sql文件是一个脚本,甚至可以是一个mySQL转储,当它运行时看起来像是一个恢复,尽管从技术上讲它会创建一个新的数据库


wix文档中确认了这一点:

您是否尝试过要执行的自定义阳离子以恢复数据库?1) 添加自定义操作,传递回文件位置,并在自定义操作中向服务器上还原的数据库写入C#代码。