首页 > 解决方案 > 我们可以将 Cosmos DB 连接到 SSRS 吗?

问题描述

我必须在 SSRS 报告中使用 Azure Cosmos DB。我使用过 ODBC 连接器。我能够使用简单的选择查询来获取数据。但无法在 SSRS 报告中调用存储过程或函数。是否可以在 SSRS 中调用 Cosmos DB 存储过程?

标签: reporting-servicesazure-cosmosdb

解决方案


Cosmos DB 不是关系数据库,并且它的过程是用 Javascript 编写的,在问题的上下文中是不相关的事实。

您可以通过 SQL Server 中的存储过程直接或间接地查询 Cosmos 中的数据,该存储过程又可以用作 SSRS 报告的数据源。

1) 编写一个连接到 Cosmos DB 的 Python 脚本,将您要查找的数据查询到 JSON 文档中,并将这些数据写入文件https://docs.microsoft.com/en-us/azure/cosmos-db/ sql-api-python-samples

如果 Cosmos 中的此查询需要扫描多个分区中的文档,您可以启用跨分区查询。“要跨分区运行查询,请将 EnableCrossPartitionQuery 设置为 true(或 REST API 中的 x-ms-documentdb-query-enablecrosspartition)” https://docs.microsoft.com/en-us/azure/cosmos-db/how -to-query-container

2) 在 SQL Server 中创建存储过程。在 SQL Server 存储过程中使用 xp_cmdshell 来执行步骤 1 中的 Python 脚本。或者您可以使用 powershell 步骤在 SQL Server 中创建代理作业——存储过程可以执行该作业。

https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/xp-cmdshell-transact-sql?view=sql-server-ver15

从 MSSQL 运行 Python 脚本

在过程中使用 BULK INSERT 将文件中的 JSON 数据插入到 SQL Server 中的表中——然后使用 T-SQL OPENJSON 函数将 JSON 解析为柱状形式。

https://docs.microsoft.com/en-us/sql/t-sql/functions/openjson-transact-sql?view=sql-server-ver15

3) 添加存储过程作为 SSRS 报告的数据源。

如果您使用的是 MongoAPI,您还可以使用 SQL Server 2019 中的 Polybase 直接查询 Cosmos。

https://docs.microsoft.com/en-us/sql/relational-databases/polybase/polybase-configure-mongodb?view=sql-server-ver15


推荐阅读