在SSRS

时间:2017-03-03 22:43:12

标签: sql-server stored-procedures reporting-services ssrs-2012 temp-tables

我在SQL Server中有两个SP。 SP1在具有不同参数的循环中重复调用SP2,并将SP2的输出存储在临时表中。

由SP1重复调用的SP2有一些带有"未命名"的临时表。其中的主键。

我知道临时表上的命名主键会导致问题,因为即使临时表本身被删除,有时它们也不会被删除。

在SP2中,一开始,我会检查并删除SP2中的任何临时表(如果存在)。

这似乎在SSMS中完全正常,但是当我在SSRS中使用SP1时,它会在SP2中因PK名称违规而多次抛出错误。

  

无法在对象#tempTable中插入重复键。

此问题是否有解决方法?

1 个答案:

答案 0 :(得分:0)

不要在临时表上定义主键。主键约束强制唯一性。而是创建聚簇索引。您仍然可以获得查询的性能优势,但不会出现重复数据错误。

很可能会生成重复行,因此请注意输出中的重复数据。

解决了重复数据问题后,您可以恢复主键以确保将来在重复数据上引发错误,或将其保留为聚簇索引,并希望报告使用者注意到数据是否正在存在再次重复。