2017-08-28 37 views
7

Tôi đang cố gắng khôi phục tệp cơ sở dữ liệu sao lưu bằng WiX và cơ sở dữ liệu được tạo nhưng không có bảng và dữ liệu nào được khôi phục. có vẻ như nó chỉ tạo ra cơ sở dữ liệu và không làm gì khác. không chắc chắn nếu đây là WiX liên quan hoặc có cái gì để làm với việc sử dụng MSSQL. đây là XML WiX:WiX: Khôi phục DB không khôi phục các bảng và hồ sơ

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

tôi cũng đã cố gắng "VỚI PHỤC HỒI" và sử dụng dãy thoát xung quanh dấu ngoặc vuông:

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

cách thích hợp để làm điều này dường như thảm hại chưa rõ ràng trong tài liệu.

Trả lời

6

hơn là cố gắng tham khảo các tên wix của tập tin cơ sở dữ liệu, tôi được sử dụng như sau:

SQL="RESTORE DATABASE blankaaa FROM DISK = '[INSTALLFOLDER]javaaaanew\blankaaa.bak' WITH RECOVERY"