【问题标题】:How to import data into cosmos db emulator如何将数据导入 cosmos db 模拟器
【发布时间】:2021-09-08 18:41:55
【问题描述】:
我有一个包含 3 或 4 个集合的开发和 qa Azure Cosmos Db 数据库。我希望能够对这些数据进行快照并将其复制到本地,以便我可以将其用于通过 Cosmos Db 模拟器进行本地开发。我看过data migration tool,虽然它确实提到了从模拟器复制,但它没有提到你是否可以复制到模拟器。有谁知道它或其他工具是否可以从 Azure Cosmos Db 复制到本地模拟器,如果可以,是否有任何特殊步骤可以这样做?或者有没有更简单的方法来导出 cosmos 集合,以便我可以在本地导入它们?我刚刚尝试并收到错误“正在使用传输协议或密码中的禁止加密进行请求。我尝试了所有 3 种连接模式。
谢谢!
【问题讨论】:
标签:
azure-cosmosdb
azure-cosmosdb-emulator
【解决方案1】:
您可以尝试Github issue 中建议的解决方法吗?
- 从 cmd 获取当前所需的设置:netsh http show sslcert >> C:\temp\netsh.output.txt
- 在输出文件中搜索 0.0.0.0:8081 或您正在使用的任何端口
- 从 cmd 设置标志:netsh http update sslcert ipport=0.0.0.0:8081 appid={00000000-0000-0000-0000-9134d4f81626} certhash=b35df09d20000000000019ad39c617000000000 cert
appid 和 certhash 的值应来自步骤 1 中捕获的输出文件。
重要的部分是 disabletls13=enable。
您需要所有这些位才能使命令正常工作。
【解决方案2】:
此连接问题可能是由操作系统的全局更改或默认启用 TLS 1.3 的浏览器设置引起的。 Cosmos 模拟器仅接受并使用 TLS 1.2 协议。
确保数据迁移工具在连接到 Azure Cosmos 帐户时使用传输层安全性 (TLS) 1.2,使用 .NET Framework 版本 4.7。
更改设置并默认为 TLS 1.2;例如,在 IIS 管理器中导航到“站点”->“默认网站”并找到端口 8081 的“站点绑定”并编辑它们以禁用 TLS 1.3。可以通过“设置”选项对 Web 浏览器执行类似的操作。
查看此文档以获取 Troubleshoot connectivity issues。
Database migration tool for Azure Cosmos DB:
Azure Cosmos DB 模拟器仅支持通过 TLS 进行的安全通信。 Azure Cosmos DB 模拟器支持单个固定帐户和用于主密钥身份验证的众所周知的身份验证密钥。此帐户和密钥是唯一允许用于 Azure Cosmos DB 模拟器的凭据。
在Source(Azure Cosmos DB)和Target(Cosmos DB enumator)的数据迁移工具中构造如下连接字符串。
AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;.