Wix: как создать базу данных с помощью SqlScript

Мне нужно создать простую базу данных с именем MyDB с помощью Wix с помощью SqlString. Ниже мой фрагмент кода. Что касается строки (SQL="CREATE DATABASE MyDB"), могу ли я узнать, правильно ли это и будет ли она создавать базу данных "MyDB"? Я правильно установил атрибуты пользователя и сервера. Однако это разрешает установку, но не создает базу данных. Может ли кто-нибудь указать, что не так или отсутствует?

<sql:SqlDatabase Id='SqlDatabase' Database='master' User='SQLUser' Server='[SQLSERVER]' 
              CreateOnInstall='no' DropOnUninstall='no' ContinueOnError='yes'>

              <sql:SqlString Id="InitialCreateDB" ExecuteOnInstall="no" ContinueOnError="yes"
                          SQL="CREATE DATABASE MyDB"/>
            </sql:SqlDatabase>

Заранее спасибо.


person cch    schedule 02.08.2011    source источник
comment
Подробный журнал расскажет вам больше о том, что происходит за кулисами...   -  person Yan Sklyarenko    schedule 02.08.2011
comment
И SQL Profiler предложит более подробную информацию со стороны SQL Server.   -  person Thomas S. Trias    schedule 08.09.2011


Ответы (2)


Почему у вас нет файла сценария, содержащего код SQL для создания базы данных.

<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>
person Sunil Agarwal    schedule 02.08.2011
comment
Обратите внимание на вложенность элемента SqlDatabase ниже компонента, чтобы создать базу данных. Обратите внимание, что атрибут базы данных имеет значение [Formatted][1], поэтому он может содержать ссылку на свойства. [1]: msdn.microsoft.com/library/aa368609.aspx - person Thomas S. Trias; 08.09.2011

Установите значение CreateOnInstall на «да». Это создаст экземпляр базы данных.

person riggs    schedule 11.04.2012