天天看點

關于SSRS使用臨時表的問題( Invalid object name #temptb)

問題:利用SSRS 2005做報表的時候,調用帶有臨時表的SP,系統報錯,并無法進入向導的下一步,錯誤如下

關于SSRS使用臨時表的問題( Invalid object name #temptb)

經過研究後想到如下四種解決方案:

1. 使用SSRS另一種方式調用SP,無參SP,有參SP待驗證。

關于SSRS使用臨時表的問題( Invalid object name #temptb)

2.. 使用表變量代替臨時表,這樣做法可以避免SSRS 2005 的文法錯誤提示,缺點就是如果處理的資料量比較大,會占用過大的記憶體,并且報表加載時間過長。

3..使用一個不包含臨時表的SQL語句建立報表,建立成功以後,修改資料源,替換上包含臨時表的SQL指令或者存儲過程,這時用SSRS 2005自帶的文法檢查功能對資料源文法檢測也會報錯,但是不會影響報表的儲存和加載。為了測試在并發調用報表的情況下,臨時表内的資料是否會混淆,我做了個測試,将建好的需要運作一段時間才能生成的帶有臨時表的報表釋出到報表伺服器,然後同時打開多個網頁通路該報表,報表同時加載,但是資料之間仍就保持獨立。測試結果說明SSRS 2005在并發條件下調用臨時表,與其他程式調用臨時表相同,不會影響最後的顯示結果。 當然上面提到的臨時表指的是本地臨時表(以#開頭),如果是全局臨時表(以##開頭),則報表之間将會共享全局臨時表中的資料。

4.将報表更新到SSRS 2008, SSRS 2008支援臨時表的使用。

參考:

http://www.uxys.com/html/SQLServer/20120720/74563.html