加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – WiX:数据库还原不会还原表和记录

发布时间:2020-12-12 06:59:50 所属栏目:MsSql教程 来源:网络整理
导读:我正在尝试使用WiX还原备份数据库文件,并且已创建数据库但未恢复任何表和数据.它似乎只是创建数据库而不做任何其他事情.不确定这是否与WiX有关或与MSSQL使用有关.这是WiX XML: Component Id="sql_backup_restore" Guid="8C95F258-7AB7-4A3A-A0CD-438FC61D45C
我正在尝试使用WiX还原备份数据库文件,并且已创建数据库但未恢复任何表和数据.它似乎只是创建数据库而不做任何其他事情.不确定这是否与WiX有关或与MSSQL使用有关.这是WiX XML:
<Component Id="sql_backup_restore" Guid="8C95F258-7AB7-4A3A-A0CD-438FC61D45CC">
        <CreateFolder Directory="javaaaanew_dir"/>
        <sql:SqlDatabase Id="aaanew3_db" Server="[MSSQLSERVER]" Database="master" ConfirmOverwrite="yes" ContinueOnError="yes" DropOnReinstall="no" DropOnInstall="no" DropOnUninstall="no" CreateOnInstall="yes" CreateOnReinstall="no" CreateOnUninstall="no">
          <!-- restore blankaaa database -->
          <sql:SqlString Id="attach_db" ExecuteOnInstall ="yes" ExecuteOnReinstall="no" ExecuteOnUninstall="no" ContinueOnError="yes" Sequence="1" SQL="RESTORE DATABASE blankaaa FROM DISK = '[blankaaaBAK]' WITH RECOVERY;" />
          <!-- rename blankaaa to aaanew3 -->
          <sql:SqlString Id="alter_db_name" ExecuteOnInstall ="yes" ExecuteOnReinstall="no" ExecuteOnUninstall="no" ContinueOnError="yes" Sequence="2" SQL="USE master;GO;ALTER DATABASE blankaaa Modify Name = 'aaanew3' GO;" /> <!-- should fail here if preexisting database? -->
          <!-- change aaanew3 dbowner to 'sa' -->
          <sql:SqlString Id="alter_db_owner" ExecuteOnInstall ="yes" ExecuteOnReinstall="no" ExecuteOnUninstall="no" ContinueOnError="yes" Sequence="3" SQL="ALTER AUTHORIZATION ON DATABASE::aaanew3 TO sa;" />
          <!-- add user 'sa' to database security? -->
          <sql:SqlString Id="alter_db_sa" ExecuteOnInstall ="yes" ExecuteOnReinstall="no" ExecuteOnUninstall="no" ContinueOnError="yes" Sequence="4" SQL="USE [aaanew3];GO;CREATE USER [sa] FOR LOGIN [sa];GO;" />
          <!-- add user mapping for 'sa' on aaanew3 with schema 'dbo' -->
          <sql:SqlString Id="alter_db_schema" ExecuteOnInstall ="yes" ExecuteOnReinstall="no" ExecuteOnUninstall="no" ContinueOnError="yes" Sequence="5" SQL="USE [aaanew3];GO;ALTER USER [sa] WITH DEFAULT_SCHEMA=[dbo];GO;" />
        </sql:SqlDatabase>
      </Component>

我也试过“WITH RECOVERY”并在方括号周围使用转义序列:

<sql:SqlString Id="attach_db" ExecuteOnInstall ="yes" ExecuteOnReinstall="no" ExecuteOnUninstall="no" ContinueOnError="yes" Sequence="1" SQL="RESTORE DATABASE blankaaa FROM DISK = '[[]blankaaaBAK[]]' WITH RECOVERY;" />

在文档中看起来不太清楚这种做法的正确方法.

解决方法

而不是尝试引用数据库文件的wix名称,我使用以下内容:
SQL="RESTORE DATABASE blankaaa FROM DISK = '[INSTALLFOLDER]javaaaanewblankaaa.bak' WITH RECOVERY"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读