Azure 如何让CosmosDB Emulator在机器启动/重新启动时自动启动

Azure 如何让CosmosDB Emulator在机器启动/重新启动时自动启动,azure,Azure,我们正在尝试将Azure Storage Emulator和Azure CosmosDB Emulator用于本地开发以及作为CI/CD构建的一部分进行单元测试。以下是有关这些模拟器的详细信息的主链接: 作为这项工作的一部分,我们需要某种方法来启动和停止这两个模拟器。我们已经尝试在Docker上运行,但由于反病毒干预等原因,Docker也有自己的问题,所以我不想在本文中讨论这个选项 这是我们的主要要求-在机器重新启动/启动期间启动模拟器。在Azure Storage Emulator的情况下,

我们正在尝试将Azure Storage Emulator和Azure CosmosDB Emulator用于本地开发以及作为CI/CD构建的一部分进行单元测试。以下是有关这些模拟器的详细信息的主链接:

作为这项工作的一部分,我们需要某种方法来启动和停止这两个模拟器。我们已经尝试在Docker上运行,但由于反病毒干预等原因,Docker也有自己的问题,所以我不想在本文中讨论这个选项

这是我们的主要要求-在机器重新启动/启动期间启动模拟器。在Azure Storage Emulator的情况下,我们可以通过Windows任务调度器调用适当的命令来启动模拟器,这非常简单。因此,我们在CosmosDB Emulator上尝试了相同的方法,但它只是以“灾难性故障(0x8000FFFF)”错误失败,没有太多细节来解决问题。这是在Windows Server 2016标准机器上,但我在Windows 10 Enterprise机器上也得到了相同的结果

此后,我尝试了以下几种其他选择:

  • 使用以下命令创建了批处理文件,并通过任务计划程序运行该文件: 启动/d“C:\Program Files\Azure Cosmos DB Emulator”CosmosDB.Emulator.exe
  • 当我手动运行批处理文件时,这会起作用,但不能通过任务调度器

  • 使用PowerShell的方法和上述结果相同

  • 最后,我使用Topshelf创建了一个windows服务,在使用VisualStudio或调试代码运行时,该服务仍然可以工作,但在安装该服务并在服务控制台中运行时却不能工作

  • 我们尝试了不同的用户帐户,也使用了具有管理员权限的帐户。我没有在我原来的帖子中添加以下细节:

    如果由我或我的团队成员手动运行,CosmosDB emulator将启动,但当任务调度器调用它时,以下错误将写入系统日志

    特定于应用程序的权限设置不会为具有CLSID的COM服务器应用程序授予本地激活权限 {D63B10C5-BB46-4990-A94F-XXXXXXXXXX} 和APPID {9CA88EE3-ACB7-47C8-AFC4-XXXXXXXXXX} 从应用程序容器中运行的地址LocalHost(使用LRPC)向用户{Damain}{UserName}SID(S-1-5-21-174494438-4207865126-xxxxxxxxx-xxxxx)发送不可用SID(不可用)。可以使用组件服务管理工具修改此安全权限


    有没有其他方法可以让这项工作正常进行?

    将David Noble的答案张贴在下面,以便其他人可以利用它:

    请允许我自我介绍一下。我是Cosmos DB Emulator的开发者所有者。谢谢你的来信

    要通过任务计划程序启动仿真器,请尝试使用以下命令行选项:/noui。还请确保任务在属于Administrators组的帐户下以最高权限运行

    我刚刚定义了这样一个任务,当我登录到我的Windows10DevBox时运行。它在属于本地Administrators组的my domain帐户下运行此命令行: “C:\Program Files\Azure Cosmos DB Emulator\CosmosDB.Emulator.exe”/noui

    我在运行此任务时确认:

    •如果没有/noui选项,我看到了您看到的错误:E_意外(0x8000FFFF),灾难性故障

    •使用/noui选项,模拟器可以正确启动(没有任务栏图标,也没有按预期打开data explorer),并且我可以使用data explorer创建文档


    请尝试一下,让我们知道进展如何。如果需要,我会在这里提供帮助。

    我通过在“开始”菜单上打开CosmosDB快捷方式的文件位置,复制该文件夹中的快捷方式并将其粘贴到:

    C:\Users\<user name>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
    
    C:\Users\\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
    

    用户界面按预期工作。

    我猜这是否与用户帐户权限有关?不确定,我已经编辑了我的原始帖子,添加了一些额外的细节。我们也尝试过使用一般服务帐户或域帐户,所有这些都可以在手动运行时正常工作。感谢David Noble,我能够解决这个问题-太棒了!你能把大卫提出的决议贴在下面吗?我认为这对其他人会有很大帮助。