我在ASP.NET的網頁中, 使用到一個SQL預存程序去Select
但是SQL預存程序會動態產生一個Table ##TmpTable1
跑完預存程序時會自動刪掉Table ##TmpTable1
可是在事件檢視器中 (應用程式 -> ASP.NET )
每天大約會跳1~5次警告
資料庫中已經有一個名為 '##TmpTable1' 的物件。 於 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
請問該如何防止同一個SQL預存程序
在同一時間內多重執行?
或是有其它的解法?
SQL預存程序會動態產生一個Table ##TmpTable1
用##TmpTable1全域暫存表格, 當第1個執行此一預存程序時, 再來的第2個執行此一預存程序會出現一個名為 '##TmpTable1' 的物件;
應該考慮用區域暫存表格 #TmpTable1, 才可避免不同連線出現要開同一暫存表格的錯誤.
ps: 在開暫存表格前, 應先再考慮是否有合適的索引可取代; 畢竟開暫存表格還要再維護資料.
那段connection跑完後有下Close語法嗎?
如果有的話SQL的Session應該會被關閉,Session關閉後Global Table就會被刪除掉了。