程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> 關於sqlserver 2005 使用臨時表的問題( Invalid object name #temptb)

關於sqlserver 2005 使用臨時表的問題( Invalid object name #temptb)

編輯:更多數據庫知識

最近在利用 SSRS 2005 做報表的時候,調用帶有臨時表的數據源時,系統會報錯,並無法進入向導的下一步,錯誤如下:
There is an error in the query. Invalid object name '#temptb'.

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

1. 使用表變量代替臨時表,這樣做法可以避免SSRS 2005 的語法錯誤提示,缺點就是如果處理的數據量比較大,會占用過大的內存,並且報表加載時間過長。

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

3.將報表升級到SSRS 2008, SSRS 2008支持臨時表的使用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved