Запустите эмулятор хранилища Azure как службу
Мы используем Azure Storage Emulator на машинах разработки и CI-сервере, чтобы иметь возможность локально использовать очереди хранения. Теперь каждый раз, когда я выхожу из Windows или перезагружаюсь, мне нужно вручную запускать эмулятор хранилища.
Есть ли способ запустить эмулятор хранилища Azure как службу, чтобы он автоматически запускался, когда Windows это делает?
2 ответа
Обновленный ответ после опробования вариантов ответа Гаурава Мантриса
Запуск командного файла, как описано Гауравом Мантри, оставляет командное окно открытым. Вот способ избежать этого:
- Открыть планировщик заданий
- Создать новое задание
- Добавьте триггер "При входе в систему"
- Добавьте действие "Запустить программу" со следующими настройками:
- Программа / скрипт:
AzureStorageEmulator.exe
- Добавьте аргументы:
start
- Начинать:
C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator
(или там, где эмулятор хранилища находится на вашем диске)
- Программа / скрипт:
Одним из вариантов запуска любого не обслуживающего процесса, такого как консольное приложение, в качестве службы является использование диспетчера неосасывающих услуг в качестве хоста. (Исторически вы могли использовать SRVANY.EXE
из Windows NT Resource Kit.)
С помощью NSSM это так же просто, как:
> choco install nssm -y
> nssm install AzureStorageEmulator "C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" start -inprocess
Файлы эмулятора хранилища можно найти в C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator
, Я заметил, что пакетный файл там называется StartStorageEmulator.cmd
,
Что вы могли бы создать ярлык этого файла в вашем Startup
папка (например, C:\Users\<your user name>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
). Затем при повторном входе в систему эмулятор хранилища запустится автоматически. [Пожалуйста, смотрите инструкции здесь: http://www.tech-recipes.com/rx/28206/windows-8-how-to-add-applications-startup-folder/].
Другой альтернативой является создание новой задачи, которая запускает этот пакетный файл и запланирует выполнение этой задачи при запуске компьютера. Пожалуйста, просмотрите эту ветку для получения более подробной информации: Запустите пакетный файл при запуске.
В нашей среде разработки AX OneBox уже была запланированная задача DynamicsStartAzureStorageEmulator
это запускает эмулятор как NT AUTHORITY\SYSTEM при запуске. Эмулятор хранения Azure был обновлен (автоматически? Разработчиками?), А затем перестал работать.
Проблема была двоякой:
Он пытался использовать экземпляр LocalDB(SQL Express Subset)
Необходимо было инициализировать новую БД, как СИСТЕМУ.
(Например, раньше было AzureStorageEmulatorDB49
, теперь это AzureStorageEmulatorDB510
)
Как только я запустил shell / cmd как SYSTEM(используя PSEXEC, и попытался запустить эмулятор, чтобы увидеть вывод ошибки, все остальное было довольно простым).
Решение было довольно простым: запустить оболочку как систему (с помощью Psexec).
PsExec.exe -i -s cmd
И как СИСТЕМА, инициализируйте новую базу данных (в нашем случае, используя "Настоящий" SQL, а не LocalDB / Express.):
AzureStorageEmulator.exe init -server localhost
(Если вы хотите использовать LocalDB, AzureStorageEmulator.exe init
должно работать нормально)
Поскольку это было несколько виртуальных машин, я использовал удаленное взаимодействие с PowerShell:
$ListOfHostnames | foreach {.\PsExec.exe \\$_ -i -s "C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" init -server localhost}
(Да, если у вас PwSH 7, вы можете использовать -parallel;)
После этого была простая перезагрузка, чтобы убедиться, что все сработало автоматически.
Дополнительные элементы: я установил запланированное задание на запуск только один раз в день, например, в 5 часов утра, на случай, если оно по какой-то причине не запущено.
У некоторых envs была БД эмулятора на экземпляре LocalDB, который я удалил. Не обязательно, просто чище.
Ссылки:
https://docs.microsoft.com/en-us/azure/storage/common/storage-use-emulator и https://docs.microsoft.com/en-us/azure/storage/common/storage-use-emulator