7
我正在嘗試使用WiX恢復備份數據庫文件,並創建數據庫,但沒有任何表和數據被恢復。看起來好像它只是創建數據庫而別無所求。不確定這是否與WiX相關或與MSSQL使用有關。這裏是維克斯XML:WiX:數據庫恢復不恢復表和記錄
<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;" />
正確的方式做到這一點似乎在文檔中實在太差不清楚。