如何在Wix Installer 3.9中从.bak文件(数据库备份)恢复数据库

5

我正在尝试使用Wix Installer 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文件。

提前感谢。


你有尝试使用自定义操作来恢复数据库吗? 1)添加自定义操作,传递备份文件位置,并在自定义操作中编写C#代码以在服务器上恢复数据库。 - mukesh UN singh
1个回答

0

很遗憾,您将无法使用bak文件进行恢复。这不是一个脚本(sql:SqlScript组件所需的),而是一个备份文件,两者不同。

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

.sql文件是一个脚本,甚至可以是mySQL转储文件,运行后看起来像是还原,但从技术上讲,它会创建一个新的数据库。

这在wix文档中得到了确认:http://wixtoolset.org/documentation/manual/v3/xsd/sql/sqlscript.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接