2011-08-03 9 views
0

:問題は、Cで設定SqlFileSpecとSqlLogFileSpecファイル名属性でデータベースを作成します。私はまた、フォルダ(C:\ Program Files \ TestProject)が既に作成されていることを確認しました。誰もこれを解決する方法を知っていますか?ウィックス: Program Filesディレクトリ:私はCで設定SqlFileSpecとSqlLogFileSpecファイル名属性を使用してデータベースを作成する問題を抱えている Program Filesディレクトリ

エラー26201です。エラー-2147217900:SQLデータベースの作成に失敗しました:MyDatabase、エラーの詳細:CREATE DATABASE failed。リストされたファイル名の一部を作成できませんでした。関連するエラーを確認してください。

 <sql:SqlFileSpec Id="Mdf" Name="MyDatabase_Mdf" Filename="['INSTALLLOCATION']\MyDatabase.mdf" Size="3072KB" MaxSize="UNLIMITED" GrowthSize="1024KB"/> 
        <sql:SqlLogFileSpec Id="Ldf" Name="MyDatabase_log" Filename="['INSTALLLOCATION']\MyDatabase_log.ldf" Size="2048KB" MaxSize="2048GB" GrowthSize="10%"/> 

... 


    <Property Id='INSTALLLOCATION'>C:\Program Files\TestProject</Property> 

ありがとうございます。 INSTALLLOCATION周り

答えて

3

引用符を削除する必要があります - ちょうど[INSTALLLOCATION]を使用しています。そして、アクションが実行されるまでに、上記のファイル(mdf/ldf)がそこにあることを確認してください。冗長なログはここにあなたの友人であることを忘れないでください。

+0

私は引用符を削除しようとしましたが、まだ動作しません。問題は、パスがProgram Filesの下にある場合にのみ発生するようです.INSTALLLOCATIONをC:\ MyFolderに指定し、そのフォルダが存在すれば、正しくインストールされます。プログラムファイルには制限がありますか?私はwixに慣れていません、あなたは言及されたファイル(mdf/ldf)がアクションが実行される時までにそこにあることをどうやって保証しますか?このSqlFileSpecとSqlLogFileSpecは、実行時またはファイルをコピーするときにファイルを作成する必要がありますか? – cch

+0

実際にこれらのファイルをFile要素として含むコンポーネントはありますか?それが失敗すると、エラーの説明を含むメッセージボックスがスローされますか?そうであれば、そこにあるボタンを押さずに、INSTALLLOCATIONにファイルがあるかどうかを調べてください –

0

、データベースを作成するなど、いくつかのスクリプトを実行するためのスクリプトが含まれています。この

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" 
xmlns:sql="http://schemas.microsoft.com/wix/SqlExtension"> 
    <Product Name='SQL app 1.0' Id='DB501C18-86C7-4D14-AEC0-86416A69ABDE' Language='1033' Codepage='1252' 
    Version='1.0.0' Manufacturer='ABC Ltd.'> 
      <Package Id='????????-????-????-????-????????????' Keywords='Installer' Description="SQL App 1.0 Installer" 
       Comments='Comment.' Manufacturer='ABC Ltd.' InstallerVersion='100' 
       Languages='1033' Compressed='yes' SummaryCodepage='1252' /> 
     <Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' /> 
     <User Id="MySQLUser" Name="[SQLUSER]" Password="[SQLUSERPASSWORD]"></User> 
     <Directory Id='TARGETDIR' Name='SourceDir'> 
      <Directory Id='ProgramFilesFolder' Name='PFiles'> 
       <Directory Id='INSTALLDIR' Name='TestSQL'> 
         <Component Id="MySqlComponent" Guid="C50999A0-02FD-42d5-9F65-7375318DD328"> 
         <SqlDatabase Id="MySqlDatabase" Database="MyDatabase" Server="[SQLSERVER]" Instance="[SQLINSTANCE]" 
          CreateOnInstall="yes" DropOnUninstall="yes" User="MySQLUser" ContinueOnError="yes"> 
           <SqlScript Id="CreateDatabase" ExecuteOnInstall="yes" BinaryKey="CreateTablesBin"></SqlScript> 
         </SqlDatabase> 
         </Component> 
       </Directory> 
      </Directory> 
     </Directory> 
     <Binary Id="CreateTablesBin" src="CreateDatabase.sql"></Binary> 
     <Feature Id='Complete' Level='1' Description="Full" Title="Full Installation"> 
      <ComponentRef Id='MySqlComponent' /> 
     </Feature> 
    </Product> 
</Wix> 

CreateDatabase.sqlファイルを試してみては

0

私が使用して私の問題を修正するために管理してきました」。\ SQLExpress2012" 「[MachineName] \ SQLExpress2012」または「[ipAddress] \ SQLExpress2012」の代わりに入力します。私は、これを行うことによって、代わりに名前付きパイプを接続して使用するTCP/IPメソッドを使用していない可能性があることを推測できます。

また、SQL Serverの構成を確認し、サーバーインスタンスがこれらの接続方法をサポートしているかどうかを確認することもできます。