2017-08-28 5 views
7

WiXを使用してバックアップデータベースファイルを復元しようとしていますが、データベースは作成されますが、テーブルとデータは復元されません。まるでデータベースを作成して何もしていないようです。これがWiXに関連しているか、MSSQLの使用法と関係があるかどうかは不明です。ここでのWiX XMLは次のとおりです。WiX:DBリストアでテーブルとレコードが復元されない

 <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> 

私も「RECOVERY WITH」しようとした角括弧の周りにエスケープシーケンスを使用しています

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

これを行うための適切な方法は、マニュアルでwretchedly不明確と思われます。

答えて

6

ではなく、データベースファイルのWiXの名を参照しようと、私は次のように使用:

SQL="RESTORE DATABASE blankaaa FROM DISK = '[INSTALLFOLDER]javaaaanew\blankaaa.bak' WITH RECOVERY" 
関連する問題