Wix: создать базу данных сервера SQL в указанном месте - PullRequest
5 голосов
/ 11 апреля 2011

У меня есть установщик, созданный с помощью Wix.Я хотел бы иметь возможность указать местоположение, где установлен сервер SQL.Одно из решений, которое я могу придумать, - это поместить заполнитель в скрипт CreateDatabase, а во время выполнения просто заменить заполнитель фактическим путем, указанным пользователем.

Мне интересно, есть ли лучший способ сделать это?Предоставляет ли Wix что-нибудь, что я могу использовать?

Спасибо,

Ответы [ 4 ]

5 голосов
/ 11 апреля 2011

Вы можете воспользоваться стандартным расширением WiX SQL .Например, элемент SqlString предоставляет возможность указать запрос SQL для выполнения во время установки.Элемент SqlDatabase предоставляет готовую опцию для создания базы данных SQL.Оба принимают свойства установщика Windows для атрибутов @SQL и @Server соответственно.Это означает, что вы можете получить пользовательский ввод, сохранить его в свойстве и использовать это свойство в элементах Sql.

1 голос
/ 23 июля 2015

Расширяя ответ Яна, можно использовать очень простой синтаксис, если вы используете расширение Sql - вам нужно включить MDF и LDF (файлы данных + журналов) для вашей базы данных SQL, но затем присоедините их, ссылаясь на то же имя файла.

В следующем предполагается, что SQL Server Express будет установлен локально под экземпляром localhost \ sqlexpress

<Property Id="SQLINSTANCE" Value="SQLEXPRESS" />
<Property Id="SQLSERVER" Value="LOCALHOST" />    
<Property Id="DATA_FOLDER" Value="C:\Program Files\Microsoft SQL Server\MSSQL11.SQLExpress\MSSQL\DATA\" />

<Component Id="Sql_Database_Deploy" NeverOverwrite="yes" Directory="[DATA_FOLDER]">
    <File Source="Northwind.mdf"></File>
    <File Source="Northwind)log.ldf"></File>
    <sql:SqlDatabase Id="SqlDatabase" Database="Northwind" Server="[SQLSERVER]" Instance="[SQLINSTANCE]" CreateOnInstall="yes" DropOnUninstall="yes">
      <sql:SqlFileSpec Filename="[DATA_FOLDER]Northwind.mdf"  Id="Northwind_SqlFileSpec"/>
      <sql:SqlLogFileSpec Filename="[DATA_FOLDER]Northwind_log.ldf" Id="Northwind_SqlLogFileSpec"/>
    </sql:SqlDatabase>
  </Component>

Для краткости я исключил аутентификацию из этого примера, но вы также можете указать пользователя Sql, который будет использоваться для команды, используя элемент User и ссылаться на идентификатор элемента User в SqlDatabase. атрибут.

1 голос
/ 13 апреля 2011

Я решил эту проблему с помощью динамического SQL. Если вы ищете решение, пожалуйста, проверьте принятый ответ на следующий вопрос:

SQL Server: используйте параметр в CREATE DATABASE

0 голосов
/ 14 апреля 2011

Вы не можете получить это бесплатно от WiX.

Используя SqlString, некоторые параметры и, как вы отметили, прямое использование CREATE DATABASE. Вам понадобится:

  • DB_SERVER
  • DB_INSTANCE
  • DB_PORT
  • DB_DATA_FOLDER
  • DB_LOG_FOLDER

Если вы планируете использовать аутентификацию SQL, вам, конечно, также нужно будет передать в DB_USER / DB_PASS

Я бы настоятельно рекомендовал написать свои собственные действия для проверки параметров.

  • Существует ли сервер / экземпляр на локальном компьютере? Хотя вы всегда можете удаленно подключиться к SQL-серверу и сказать ему, чтобы он устанавливал файлы на данный диск, это затрудняет предварительную проверку чего-либо об этих дисках.
  • Используя данный Сервер / Экземпляр / Порт и учетные данные, вы можете подключиться к главной БД сервера sql, вы можете даже проверить разрешение на создание БД заранее. Вы можете обойтись без использования Port, но некоторые администраторы по-прежнему защищают от неясности.
  • Вам дали действительные папки данных / журналов. Корневые пути к дискам, которые действительно существуют.
  • Хорошей идеей также является проверка достаточного места на диске с папкой Data / Log. Я столкнулся с большим количеством клиентов, которые не проверяют свои файлы данных на крошечном диске C: с огромным пустым диском D: data. Я обычно использую комбинацию минимального свободного места и минимального свободного процента (например, как минимум 25% свободного места на диске)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...