Именованный экземпляр SQL Server с проектом установщика Visual Studio 2017

Программного обеспечения:

  1. SQL Server Express 2016
  2. Visual Studio 2017

Мы безуспешно пытались установить именованный экземпляр SQL Server Express 2016 как часть проекта установки VS Installer.

Мы попытались вызвать InstallNamedInstance() следующим образом:

  1. Запустите SQLEXPR_x64_ENU.exe с теми же аргументами командной строки из окна командной строки администратора: Успешно
  2. Вызовите InstallNamedInstance() из консольного приложения и запустите консольное приложение из окна командной строки администратора: Успешно.
  3. Установить настраиваемое действие (как для всех, так и для меня): не удается
  4. Событие BeforeInstall (все и только я): сбой

Я заметил, что текущий пользователь при запуске msi - это NT AUTHORITY\SYSTEM. Всякий раз, когда он выходит из строя из проекта установщика, он выходит из строя с сообщением ниже:

The account that is running SQL Server Setup does not have one or all of the following rights: the right to back up files and directories, the right to manage auditing and the security log and the right to debug programs. To continue, use an account with both of these rights. For more information, see http://msdn.microsoft.com/en-us/library/ms813696.aspx, http://msdn.microsoft.com/en-us/library/ms813959.aspx and http://msdn.microsoft.com/en-us/library/ms813847.aspx.

Это ограничение проекта установщика или мне что-то не хватает? Удастся ли нам больше с AdvancedInstaller?

Обратите внимание, что предварительный компонент проекта установщика не работает для нас, потому что нам нужно создать именованный экземпляр SQL Server Express, и мы не можем увидеть, как мы можем передать аргументы командной строки в предварительный компонент.

private void InstallNamedInstance()
{
    // NOTE: Change below instance name to get unique instances (or uninstall previous instance)
    var InstanceName = "TFPICDATABASES2";
    var proc = new Process();
    // NOTE:
    //  1. Download "SQLServer2016-SSEI-Expr.exe" web installer from https://www.microsoft.com/en-us/download/details.aspx?id=54284
    //  2. Run the web installer and choose 3rd option "Download Media". This will give "SQLEXPR_x64_ENU.exe"
    proc.StartInfo.FileName = @"c:\temp\sql\SQLEXPR_x64_ENU.exe ";
    proc.StartInfo.Arguments = " /Action=Install";
    proc.StartInfo.Arguments += $" /INSTANCEID = {InstanceName}";
    proc.StartInfo.Arguments += $" /InstanceName = {InstanceName}";
    proc.StartInfo.Arguments += " /ROLE=AllFeatures_WithDefaults";
    proc.StartInfo.Arguments += " /QS";
    proc.StartInfo.Arguments += " /INDICATEPROGRESS=True";
    proc.StartInfo.Arguments += " /IAcceptSQLServerLicenseTerms=True";
    proc.StartInfo.WorkingDirectory = @"c:\temp\sql";

    WriteLog($"FielName: {proc.StartInfo.FileName}; Arguments: {proc.StartInfo.Arguments}; WorkingDir: {proc.StartInfo.WorkingDirectory}");

    proc.StartInfo.UseShellExecute = false;
    proc.OutputDataReceived += (s, e) => WriteLog($"Info: {e.Data}");
    proc.ErrorDataReceived += (s, e) => WriteLog($"Error: {e.Data}");

    var ok = proc.Start();
    // NOTE: Log files are in C:\Program Files\Microsoft SQL Server\130\Setup Bootstrap\Log
    // Summary.txt gives log of latest installer run. It also creates one folder for each installer attempt
    // and gathers more detailed logs in those folders.
    proc.WaitForExit();
    WriteLog($"{proc.StartInfo.FileName} exited with {proc.ExitCode}");
    if (proc.ExitCode != 0)
    {
        throw new Exception($"SQL Server Express installation failed. Check log file for more details");
    }
}

Для меня это вопрос dba.stackexchange.com.

Tab Alleman 28.08.2018 21:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
1 673
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я подозреваю, что ваше настраиваемое действие не выполняется под учетной записью SYSTEM из-за ошибок, упомянутых в этих статьях:

В расширенном установщике настраиваемое действие, устанавливающее сервер SQL, не выполняется под системной учетной записью, оно выполняется под учетной записью, с которой началась установка (который должен иметь учетные данные администратора). Настраиваемое действие (специальная программа запуска exe в комплекте с Advanced Installer) настроено на требование повышения прав администратора (который я подозреваю, вы не можете настроить в VS), поэтому процесс установки для сервера SQL выполняется с повышенными правами с использованием обычной учетной записи пользователя с компьютера, а не NT SYSTEM.

Будет ли пользовательское действие удаления в AdvancedInstaller также запускаться под учетной записью пользователя, которая инициирует удаление (конечно, я понимаю, что потребуются права администратора). Кстати, ваш ответ нам очень помогает. Спасибо.

ChaoticCoder 31.08.2018 05:08

Другие вопросы по теме