我们在开发计算机和CI服务器上使用Azure存储模拟器,以便能够在本地使用存储队列。现在,每当我退出Windows或重新启动时,我都需要手动启动存储模拟器。
有没有办法将Azure存储模拟器作为服务启动,以便在Windows运行时自动启动?
答案 0 :(得分:19)
按照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存储模拟器已升级(自动?由开发人员?),然后停止工作。
问题是双重的:
它正在尝试使用LocalDB(SQL Express子集)实例
它需要初始化一个新的数据库,即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-database和 https://docs.microsoft.com/en-us/azure/storage/common/storage-use-emulator#command-line-syntax