我试图在azure函数中调用存储过程,该函数会从事件c WHERE c.state =“ 0”中查询'SELECT *。当我运行下面的代码时,它说必须为此操作提供PartitionKey值。我有成千上万个分区键,我需要查询每个文档。我将如何去做呢?我读过有关启用交叉分区的信息,但找不到该放在哪里。是在Azure函数中还是在存储过程中?谢谢
client.executeStoredProcedure(databaseUrl + "/colls/Events/sprocs/Events_FindDocs", "null",
(err, results) => {
if(err){
context.log(err);
} else {
context.log(results);
}
});
答案 0 :(得分:1)
存储过程无法跨分区运行。
它们是特定于分区的,因此,如果集合已分区,您将无法查询存储过程中的所有内容。
从文档中:
“如果向其注册存储过程的集合是一个单分区集合,则事务的作用域为该集合中的所有文档。如果对该集合进行了分区,则存储过程将在一个事务的作用域内执行单个分区键。然后,每个存储过程执行都必须包含一个分区键值,该值对应于事务必须在其下运行的范围。”
详细了解存储过程here