运行Azure存储模拟器作为服务

时间:2015-12-01 06:22:20

标签: windows azure windows-services azure-storage-emulator

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

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

4 个答案:

答案 0 :(得分:19)

在尝试Gaurav Mantris回答

的选项后更新了答案

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

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

答案 1 :(得分: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/]

其他替代方法是创建一个运行此批处理文件的新任务,并安排该计算机启动时运行该任务。有关详细信息,请参阅此主题:Run Batch File On Start-up

答案 2 :(得分:1)

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

使用NSSM就像这样简单:

> choco install nssm -y
> nssm install AzureStorageEmulator "C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" start -inprocess

答案 3 :(得分:0)

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

问题是双重的:

  1. 它正在尝试使用LocalDB(SQL Express子集)实例

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

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

一旦我以SYSTEM(使用PSEXEC)运行shell / cmd,并尝试运行模拟器以查看错误输出,其余的操作就非常简单了。

解决方案几乎是:以系统身份运行shell(使用Psexec)

PsExec.exe -i -s cmd

然后以SYSTEM的身份初始化新数据库(在本例中,使用“ Real” SQL,而不是LocalDB / Express。):

AzureStorageEmulator.exe init -server localhost

(如果您想使用LocalDB,AzureStorageEmulator.exe init应该可以正常工作)

由于是多个VM,所以我使用了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