【发布时间】:2016-07-01 10:55:29
【问题描述】:
我有一个存储过程,它使用了一个带有##temp 的临时表,使用select * into ##temp from tablename 即时创建。
我遇到的问题是,尽管## 是全局的,据我所知,其他用户可以使用它,但这个存储过程似乎只在查询运行的那一刻删除或使其可用.
我正在使用 SSRS 提取存储过程并使用从该报告中钻取到同一个报告,第一个报告仅显示图表,第二个报告是相同的存储过程,它通过参数使用操作链接,但第二个报告无法识别 ##temp 表。
现在您已经了解了背景,是否有解决此问题的方法或更好的方法,请记住,我们目前没有数据仓库,因此只需使用临时表来解决此问题。
谢谢
【问题讨论】:
-
如果要持久化表,请使用真实表而不是临时表。此外,您的 SP 将只运行一次,并且由于表已经存在,后续运行将失败。使用
INSERT INTO ... SELECT ...而不是SELECT ... INTO ..。 -
同意@ChrisPickford。这是temp tables 上的文档。有一个部分(大约一半,标题为 临时表)详细说明了您何时可以预期临时表离开范围并变得不可用。
-
谢谢克里斯,我的老板提到了一些关于属于客户端的 SQL 服务器,所以不要创建表,但我想视图也可以正常工作,对吧?没有相同的含义
-
视图只是对现有表的查询,因此在这种情况下没有用处。如果你需要持久化数据,那么你需要创建一个表。如果您有其他用例,那么您将需要一种不同的方法来解决您的问题。
-
嗯...我们需要那个数据仓库,也许是最好的前进方式
标签: sql-server stored-procedures reporting-services