0

SQL Server データベースをインストールする .msi を作成しようとしています。次のコードがありますが、仮想マシンで .msi を実行すると、VM の SQL Server Management Studio にデータベースが表示されません。私は何が欠けていますか?

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

Service Control が何であるかはわかりませんが、気にする必要はないと思います。

Wix がデータベースを作成することになっていますか、それともスクリプトで作成する必要がありますか? 現在、スクリプトはテーブルを作成し、データを挿入します。データベースを作成するスクリプトも試しましたが、何も起こりません。何も作成されていないため、このコードのいずれかが実行されるとは思えません。

SQL Server Management Studio でスクリプトを個別に実行すると、データベースが作成されるため、Wix コードが機能しているという疑いがさらに大きくなります。

4

1 に答える 1

1

私は常に CreateOnInstall="yes" を設定します。これは、データベースが存在しない場合はデータベースを作成し、存在する場合はデータベースへの参照を提供するためです。また、エラーがユーザーに表示されるように、ContinueOnError="no" を設定します。

潜在的な最大の問題は、スクリプトの実行に使用しているユーザーです。それは作成されており、管理者権限を与えない限り (見た目はそうではありません)、必要な権限がありません。SQL スクリプトを sa として実行し、アプリが使用する制限付きアクセス ユーザーを作成します。

サービス コントロールに関しては、上記のコメントが何をしているかを示しています。;)

于 2012-07-12T18:39:13.193 に答える