2011-07-12 78 views
-1

可能重複:
Why are temporary tables not removed from tempdb in SQL Server?爲什麼臨時表在完成範圍後不能刪除?

我們已經在存儲過程中,當運行Temparory表在tempdb中創建存儲過程創建的臨時表。

在我的SP中,我編寫了代碼手動完成所有操作後刪除該臨時表。

但它仍然存在於TempDB中,並沒有丟失。但是,當我重新啓動SQL連接時,該表已被刪除。我不明白這是怎麼發生在我的數據庫。

爲什麼我的臨時表在完成範圍後沒有被丟棄?

任何人都可以幫我解決這個問題嗎?

+1

一個星期前你問了同一個問題:http://stackoverflow.com/問題/ 6623846/why-are-temporary-tables-not-removed-from-tempdb-in-sql-server –

+0

您是否在SQL Management Studio中執行此操作?如果是的話,那就是你的問題。完成執行SP後,SQL Management Studio不會關閉連接。 – Shiroy

+0

如果您嘗試在手動刪除臨時表後重新創建臨時表,SQL是否會拋出關於已存在表的錯誤? 難道它只是一個服務器如何實現表格放置的工件嗎? IE:表已經成功刪除了表,但tempDB中的條目仍然因爲某些原因而保留? – xan

回答

1

我不知道爲什麼你的表沒有被丟棄,但你可以逃脫使用表變量(@TableName)而不是臨時表(#TableName)?那麼你根本不用擔心會丟掉它,並且只要它超出範圍就會被刪除...

+0

您正在重申一個神話:表變量保存在tempdb中;加上那麼你將不得不擔心的是性能,因爲沒有關於桌球的統計數字 –

+0

@Mitch - 關於統計的觀點是一個很好的觀點,這就是爲什麼我問他是否可以避開它 - 在少量的行上這應該不成問題。我不認爲我說過的其他東西是不準確的,雖然它是?如果是這樣,我有興趣知道我的發展! –

+0

Fergus:「表變量保存在tempdb中」 –

相關問題