2015-10-14 109 views
0

越來越下降了,我們已經設置它在SP創建並填充全局臨時表。這是從應用程序調用的主要sp。全局臨時表中的Microsoft SQL Server

現在說我是誰撥打的主要SP的全局臨時表獲得創建和一切工作正常的第一個用戶。但有些時候(可能當多個用戶需要訪問主SP是)表掉下來,並得到一個錯誤信息說無效的對象名稱

別人面臨着全局臨時表相同的問題越來越下降了?

在此先感謝!

+0

爲什麼要使用全局臨時表而不是實際表? – qxg

+0

是否每個用戶都創建自己的臨時表? –

+0

如何全局臨時表像'創建如果存在下降和recreate'或什麼 –

回答

0

你可以做一個檢查表是否創建temp table之前就已存在。
相反的global temp table,如果只在存儲過程的範圍中使用的表,喜歡local temp tablestable variable

在存儲過程中創建的本地臨時表時,存儲過程完成自動刪除。該表可以由創建該表的存儲過程執行的任何嵌套存儲過程引用。該表不能由調用創建該表

所有其它本地臨時表在當前會話結束時自動刪除

全局臨時表被自動刪除存儲過程的進程可能會引用當會話創建表結束,所有其他任務已停止引用它們。任務和表之間的關聯僅在單個Transact-SQL語句的生命週期中進行維護。這意味着全局臨時表在該積極引用該表時,創建會話結束

創建本地臨時表之前的最後一個Transact-SQL語句的結束下降,

IF OBJECT_ID('tempdb..#local_temp_table') IS NOT NULL DROP TABLE #local_temp_table 
CREATE TABLE #local_temp_table(id int) 

或表變量

declare @table_var table(id int) 
+0

沒有我們需要一種方式,其中在臨時其他用戶可以在整個應用程序中使用表格。因此我們選擇了全球臨時表。但事實inspite全球臨時表不會被丟棄,直到和除非沒有活動會話其還在適應甚至下降,如果有對環境中的單個用戶即使他得到該錯誤消息「無效的對象[全局臨時表名] 「 – user3724852