多值参数中的大量值

时间:2012-05-31 08:36:35

标签: sql-server variables reporting-services parameters

我需要能够从4000个客户返回数据。遗憾的是,这4000个客户必须处于多值参数中,因此我可以从列表中选择10个不同的客户,然后它将返回其数据(使用额外的过滤器,因此可以节省向上滚动和向下滚动的时间)。纠正我,如果我错了,多值参数最多只处理1000个值,虽然我可以看到列表中的所有4000个值,它不会返回所有4000(它在预览中,而不是在它部署之后)。我试图将它略读到900并且它将返回所有900.我确实理解用户勾选复选框不是合理的,但我仍然无法返回其余的3000+顾客。请问最好的方法是什么?

2 个答案:

答案 0 :(得分:3)

我们在开发环境sql server 2008 R2 SP1上遇到同样的问题。 但我们找到了解决方法: <...>\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportManager\Web.config 内部添加键:

<!-- language: xml -->
<add key="aspnet:MaxHttpCollectionKeys" value="10000" />

重新启动报告服务,它应该正常工作。不添加aspnet:MaxHttpCollectionKeys默认值为1000。

Source

答案 1 :(得分:2)

1000行的限制来自声明这样的事情:

DECLARE @myTable MyTableType
INSERT INTO @myTable VALUES (1), VALUES (2), VALUES (3)
EXEC myProc @myTable

这就是所谓的行构造函数语法,并且存在限制。

您可以通过使用单插入或将行构造函数一起批处理来解决此问题。虽然看起来性能可能非常差,但SQL Server创建了所谓的“琐碎计划” - 您可以在Bob B的优秀博客上阅读更多相关内容 - herehere