2012-07-12 66 views
0

我正在嘗試創建一個將安裝SQL Server數據庫的.msi文件。我有以下代碼,但是當我在虛擬機上運行.msi時,數據庫不會顯示在VM上的SQL Server Management Studio中。我錯過了什麼?如何使用Wix創建SQL Server數據庫

<Directory Id="TARGETDIR" Name="SourceDir" ComponentGuidGenerationSeed="MYGUID-AEAC-4fdf-86D0-05B33BAD4550">  
    <Component Id="SqlScripts" Guid="MyGUID-A87F-42D2-B6E7-BD8790548625"> 

     <util:User Id="SQLUser" Name="User" Password="password" CreateUser="yes" UpdateIfExists="no"/> 

      <sql:SqlDatabase Id="SQLDatabase" Database="MyDatabase" User="SQLUser" Server=".\SQLEXPRESS" 
     CreateOnInstall="no" CreateOnUninstall="no" CreateOnReinstall="no" ConfirmOverwrite="no" 
     DropOnInstall="no" DropOnReinstall="no" DropOnUninstall="no" ContinueOnError="yes"> 
      <sql:SqlScript Id="MyDatabase" BinaryKey="MyDatabase" ExecuteOnInstall="yes" ExecuteOnReinstall="no" ExecuteOnUninstall="no" ContinueOnError="no" Sequence="4"/> 
     </sql:SqlDatabase> 

     <!-- stops and restarts World Wide Web Publishing Service (W3SVC) during the install or uninstall --> 
     <ServiceControl Id="ServiceControlWebSite" Name="W3SVC" Start="both" Stop="both" Wait="yes" /> 
    </Component> 
    </Directory> 

    <Binary Id="MyDatabase" SourceFile="myDatabase.sql"/> 

    <Feature Id="Complete" Title="Setup" Level="1">   
    <ComponentRef Id="SqlScripts" /> 
    </Feature> 

我不知道服務控制是什麼,但我認爲這不是什麼問題。

Wix應該創建數據庫還是腳本應該這樣做?目前該腳本創建表並插入數據。我也嘗試過創建數據庫的腳本,但沒有任何反應。我懷疑這些代碼是否被執行,因爲沒有創建任何代碼。

當我在SQL Server Management Studio中單獨運行腳本的數據庫中創建,這進一步增加了我的疑問是,維克斯代碼工作。

回答

1

我總是設置CreateOnInstall =「是」,因爲它會再創建數據庫的你,如果它不存在,或者給你一個refernce到它,如果它。同時設置ContinueOnError =「no」,以便向用戶顯示任何錯誤。

最大的潛在問題是您用來運行腳本的用戶。它正在被創建,除非你授予它管理員權限(這是你的樣子),它將不具備所需的權限。我將我的sql腳本作爲sa運行,然後爲應用程序創建受限訪問用戶。

至於服務控制,上面的註釋告訴你它在做什麼! ;)

相關問題