17

我们在开发机器和 CI 服务器上使用 Azure 存储模拟器,以便能够在本地使用存储队列。现在每次我退出 Windows 或重新启动时,我都需要手动启动存储模拟器。

有没有办法将 Azure 存储模拟器作为服务启动,以便它在 Windows 启动时自动启动?

4

4 回答 4

26

尝试了 Gaurav Mantris 答案中的选项后更新了答案

按照 Gaurav Mantri 的描述运行批处理文件会使命令窗口保持打开状态。这是避免这种情况的一种方法:

  • 打开任务计划程序
  • 创建新任务
  • 添加“登录时”触发器
  • 使用以下设置添加“启动程序”操作:
    • 程序/脚本:AzureStorageEmulator.exe
    • 添加参数:start
    • 开始于:(C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator或存储模拟器驻留在磁盘上的任何位置)
于 2015-12-01T07:18:43.713 回答
5

将任何非服务进程(例如控制台应用程序)作为服务运行的一种选择是将Non-Sucking Service Manager用作主机。(从历史上看,您可能使用SRVANY.EXE过 Windows NT 资源工具包。)

使用 NSSM 很简单:

> choco install nssm -y
> nssm install AzureStorageEmulator "C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" start -inprocess
于 2019-01-29T12:43:53.297 回答
5

存储模拟器文件可以在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/]

其他替代方法是创建一个运行此批处理文件的新任务,并安排该任务在计算机启动时运行。有关更多详细信息,请参阅此线程:在启动时运行批处理文件

于 2015-12-01T06:46:10.700 回答
0

在我们的 AX“OneBox”开发环境中,已经有一个计划任务DynamicsStartAzureStorageEmulator在启动时将模拟器作为 NT AUTHORITY\SYSTEM 启动。Azure 存储模拟器已升级(自动?由开发人员?),然后它停止工作。

这个问题是双重的:

  1. 它试图使用 LocalDB(SQL Express Subset) 实例

  2. 它需要初始化一个新的数据库,如 SYSTEM。

(例如,以前是AzureStorageEmulatorDB49,现在是AzureStorageEmulatorDB510

一旦我以 SYSTEM 身份运行 shell/cmd(使用 PSEXEC,并尝试运行模拟器以查看错误输出,剩下的就非常简单了。

解决方案非常简单:将 shell 作为系统运行(使用 Psexec)

PsExec.exe -i -s cmd

作为 SYSTEM,初始化新数据库(在我们的例子中,使用“Real” 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 点开始一次,以防万一它由于某种原因没有运行。

一些环境在 LocalDB 实例上有一个模拟器数据库,我删除了它。不是绝对必要的,只是更清洁。

参考:

https://docs.microsoft.com/en-us/azure/storage/common/storage-use-emulator#initialize-the-storage-emulator-to-use-a-different-sql-databasehttps:// docs.microsoft.com/en-us/azure/storage/common/storage-use-emulator#command-line-syntax

于 2020-05-14T23:29:52.647 回答