我们可以将Cosmos DB连接到SSRS吗?

问题描述 投票:1回答:2

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

reporting-services azure-cosmosdb
2个回答
-1
投票

Cosmos DB不是关系数据库,并且它的存储过程与SQL Server存储过程不是同一件事(并且Cosmos DB存储过程中没有SQL;仅JavaScript,针对特定分区内的文档执行) 。

您无法从SSRS调用Cosmos DB存储过程。您只能通过SDK(或REST API)调用来调用Cosmos DB存储的proc。


0
投票

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脚本。

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

Run Python Script from MSSQL

在过程中使用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

© www.soinside.com 2019 - 2024. All rights reserved.