Требуется ли перезагрузка компьютера после установки SQL Server 2008 R2 Express?

У меня есть загрузчик, который связывает установку следующих компонентов:

SQL Server 2008 R2 -> Пакетный файл инициализации базы данных -> MSI продукта

SQL Server устанавливается в автоматическом режиме с помощью файла Configuration.INI. Нет проблем.

Проблема заключается в пакетном файле инициализации БД. Пакетные файлы вызывают две команды OSQL, снабжая их файлом .SQL (с помощью флага -i) для удаления базы данных и создания базы данных.

Когда я повторил% ERRORLEVEL% сразу после вызова OSQL, уровень ошибки равен 9009. У меня есть Google за это, но никаких значимых результатов не было.

Я перезапускаю службу (MSSQL $ SQLExpress) после установки SQL 2008, чтобы быть уверенным.

Вот что самое странное. Если я запустил установку SQL Server 2008 перед запуском загрузчика, он будет работать нормально. Ничего особенного не делал, просто установил (без перезагрузки и тд).

Кроме того, если SQL 2008 уже установлен на машине, загрузчик пропустит установку SQL 2008 и сразу перейдет к инициализации БД. В этом случае БД будет успешно инициализирована.

Есть предложения о том, как действовать?

ИЗМЕНИТЬ

Изучив это дальше, я обнаружил следующее:

Интерпретатор команд (командная строка) устанавливает ERRORLEVEL 9009, когда пакет пытается выполнить программу, которая не найдена.

Итак, почему не обнаруживается SQLCMD? Кстати, я вызываю команду SQLCMD в командном файле вот так:

SQLCMD -S <> -E -I <>

person Ian    schedule 19.07.2011    source источник
comment
Думаю, вам повезет больше на serverfault   -  person Brian Webster    schedule 19.07.2011


Ответы (1)


В конце концов, проблема заключается в том, что при порождении процесса копия переменных среды «загружается» вместе с ним. Если когда-либо значение этих переменных среды было изменено, «копия», загруженная в процесс, не будет обновлена.

В моем случае, когда установщик SQL был установлен, он добавил свой путь bin к переменной% PATH%:

C: \ Program Files \ Microsoft SQL Server \ 100 \ Tools \ Binn \

Но значение% PATH%, которое было загружено в загрузчик, не имеет этого пути, поэтому командный файл возвращает уровень ошибки 9009 (программа не найдена) при вызове sqlcmd.

Чтобы исправить это, мне нужно каким-то образом «обновить» значение переменной среды% PATH% перед началом установки каждого компонента. Я сделал это с помощью этого кода:

    internal static void RefreshEnvironmentVariable(string variable)
    {
        string latestMachineValue = Environment.GetEnvironmentVariable(variable, EnvironmentVariableTarget.Machine);

        Environment.SetEnvironmentVariable(variable, latestMachineValue, EnvironmentVariableTarget.Process);
    }
person Ian    schedule 19.07.2011