微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

本地与全局临时表-何时使用什么?

如何解决本地与全局临时表-何时使用什么?

如果要在自己的控制下缓存结果结果集,则不能使用任何类型的临时表。您应该使用存储在tempdb中甚至具有自己的结果集缓存数据库的普通用户表。

临时表,bot #local和## shared的生存期由连接控制。如果您的应用程序断开连接,则临时表将被删除,这与您所描述的不兼容。

真正的难题将是在并发运行下填充这些缓存的结果集,而不会混淆(最后得到的结果集包含来自并发报告运行的重复项,而这两个都被认为是“第一次”运行)。

附带说明,sql Server Reporting Services已开箱即用。您可以缓存和共享数据集,也可以缓存和共享报表,它已经可以使用并且已经为您测试。

解决方法

我有一个报告,该报告在执行时使用my_report_user用户名连接到数据库。该报告可以有很多最终用户。并且在每次执行中都会建立与数据库的新连接my_report_user(没有连接池)

我有一个结果集,我认为它只能创建一次(可能在报表的第一次运行中),而其他报表执行则可以重复使用这些东西。基本上,每个报表执行都应检查此结果集(存储为临时表)是否存在。如果不存在,则创建该结果集,否则仅重用可用的结果集。

我应该使用local临时表(#)还是global临时表(##)?

有没有人尝试过这些东西,如果是,请让我知道我应该关心的所有事情吗?(几乎同时运行报表等)

编辑:我正在使用Sql Server 2005

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。