我有一个针对SQL Server运行的多用户ASP.NET应用程序,并希望StoredProcA创建一个#temptable临时表 - 而不是表变量 - 来插入一些数据,然后分支到StoredProcB,StoredProcC和StoredProcD来操作数据每个业务规则都有#temptable.
与SQL交谈时,Web应用程序使用连接池.我是否会为每次调用StoredProcA获得一个新的#temptable临时区域?或者连接池是否会在用户之间共享#temptable?
连接池(使用任何现代版本的SQL Server)将sp_reset_connection
在重用连接时调用.除其他外,此存储过程会删除连接所拥有的任何临时表.
##表将由所有用户共享.我认为这不是你的意图.
单个#temp表对于调用堆栈下的所有存储过程是可见的,但在该范围之外不可见.如果您可以使用Proc A呼叫B,C和D,那么您应该没问题.
编辑:我现在应该正在处理的报告程序非常类似.:)我在应用程序调用的根proc中创建一个临时表(#results),然后在一系列子程序中执行一些复杂的数据修改,1)抽象重复代码,以及2)保持root程序不运行到500多行.