除了在创建临时表之前,最好在使用后删除临时表吗?

Hop*_*ppe 7 sql-server temp-tables sql-server-2014

我有一个存储过程创建临时表.它只需要这个存储过程的范围,而不是其他地方.

当我使用临时表列出这个时,我总是检查临时表是否存在,如果存在则删除它,然后在存储过程中创建它.即:

IF OBJECT_ID('tempdb..#task_role_order') IS NOT NULL    
        DROP TABLE #task_role_order        
CREATE TABLE #task_role_order(...)
Run Code Online (Sandbox Code Playgroud)

大多数情况下,除了在创建临时表之前,最好先删除临时表吗?

如果需要更多上下文,我有一个.NET Web API后端,它调用数据库中的存储过程.我相信当SQL Server会话结束时,SQL Server会丢弃临时表.但我不知道.NET每次查询数据库时是打开一个新的SQL Server会话,还是每个应用程序生命周期只打开一次,等等.

我读过这个类似的问题,但认为它略有不同.

Als*_*sin 6

通常,只要您不再需要资源,就可以将资源释放出来.所以我在存储过程的末尾添加DROP TABLE.

只要连接存在,临时表就会存在.通常,应用程序使用连接池(可配置),并且在调用Connection.Close时连接不会关闭.在连接重新使用之前,客户端执行特殊的存储过程(sp_reset_connection),它执行所有清理任务.所以临时表在任何情况下都会被删除,但有时会延迟一段时间.