2016-09-15 55 views
0

我想用WIX安裝數據庫。錯誤0x80004005當我試圖用WIX安裝數據庫

我已經在Windows7(32位)上安裝了SQL Server 2008 express。在此安裝上,TCP/IP已啓用,SQL Server服務正在運行。

我對SQL Server使用SQL Server和Windows身份驗證。我在代碼中都嘗試過 - 我在組件中添加了一個用戶。

的代碼非常簡單:

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
    xmlns:sql="http://schemas.microsoft.com/wix/SqlExtension"> 
    <Product Id="*" Name="NewDatabaseInstaller" Language="1033" 
      Version="1.0.0.0" Manufacturer="My Company" 
      UpgradeCode="17ef693b-3ab5-4788-a6b5-70eeabc13497"> 
     <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 
     <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
     <MediaTemplate EmbedCab="yes" /> 
     <Feature Id="ProductFeature" Title="NewDatabaseInstaller" Level="1"> 
      <ComponentGroupRef Id="ProductComponents" /> 
     </Feature> 
    </Product> 
    <Fragment> 
     <Directory Id="TARGETDIR" Name="SourceDir"> 
      <Directory Id="ProgramFilesFolder"> 
       <Directory Id="INSTALLFOLDER" Name="NewDatabaseInstaller" /> 
      </Directory> 
     </Directory> 
    </Fragment> 
    <Fragment> 
     <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 
      <Component Id="cmpSqlDatabase" Guid="{F950605D-AA59-43E6-AB19-9452F6BEC649}" KeyPath="yes"> 
       <sql:SqlDatabase Id="sqlDatabase_MyDatabase" Server="localhost" 
        Instance="MSSQLSERVER" Database="MyDatabase" 
        CreateOnInstall="yes" DropOnUninstall="yes" 
        ContinueOnError="no" /> 
      </Component> 
     </ComponentGroup> 
    </Fragment> 
</Wix> 

我在管理中的工作室錄音此查詢過的實例名稱:

SELECT @@servicename 

但是,我得到一個錯誤:

CreateDatabase: Error 0x80004005: failed to create to database: 'MyDatabase', error: unknown error
Error 26201. Error -2147467259: failed to create SQL database: MyDatabase, error detail: unknown error.
MSI (s) (FC!74) [17:43:27:786]: Product: Test -- Error 26201. Error -2147467259: failed to create SQL database: MyDatabase, error detail: unknown error.

CustomAction CreateDatabase returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Action ended 17:43:27: InstallFinalize. Return value 3.

我錯過了什麼嗎?

謝謝!

+0

錯誤0x80004005是'訪問被拒絕'。驗證運行安裝的帳戶在SQL Server中是否有足夠的權限來創建數據庫。 –

+0

嗨@YanSklyarenko,謝謝你的回答。我爲用戶添加了'並更新了sql:SqlDatabase。我試圖用用戶sa在localhost上登錄管理工作室。我可以登錄並運行查詢,但我仍然有錯誤。用戶(我的本地用戶和sa用戶有sysadmin角色) – Bob

+0

任何想法?我使用SQL事件探查器,但我沒有收到任何數據......我用sysadmin用戶,爲什麼訪問被拒絕? – Bob

回答

0

我發現我的問題。 我很慚愧我的錯誤:我把一個實例

Instance="MSSQLSERVER"

我並不需要它。我以爲這是

SELECT @@servicename

所以,我不知道我們什麼時候需要它......有人知道嗎?

謝謝你的幫助!