问题 如何查看sql server中代码创建的临时表?


我创建了一个全局临时表(即 ##TheTable)使用C#代码。我希望能够在代码完全运行后在SQL Server管理工作室中看到临时表。

是否有可能做到这一点 ?如果是,那怎么样?


4097
2018-01-29 19:05


起源

但是在代码完全运行后,临时表就消失了。这就是他们称之为临时的原因。 - paparazzo


答案:


代码完成并且会话关闭后,临时表将不再存在。如果要在SQL Server Management Studio(SSMS)中查看它,则需要保持代码会话处于打开状态,直到在SSMS中检查数据为止。

的Technet

任何用户和任何连接都可以看到全局临时表   创建它们之后,当所有用户都被删除时被删除   引用表断开与SQL Server实例的连接。

作为替代方案,这里有一个C#代码选项,它将临时表中的数据选择为代码变量,以便在代码中查看...(如果代码存在,您可以将其写入文件或通过另一种方式) - 见: https://stackoverflow.com/a/6748570/3063884


5
2018-01-29 19:30





所有临时表都记录在SQL Server>数据库>系统数据库> tempdb - >临时表下


10
2018-01-29 19:07



SQL server>数据库>系统数据库> tempdb - >临时表 - InTheSkies
我在Temporary表下看不到任何临时表。 - InTheSkies
尝试在创建临时表后放置断点,然后检入SSMS。不要忘记刷新Temporary Tables文件夹,因为它不会自动更新。即使在连接/会话丢失后,也应该保留##表。 #tables仅适用于他们制作的会话。 - TTeeple
我尝试通过不关闭我的连接,这是行不通的。我现在将尝试断点。 - InTheSkies
好的。断点有效。但是,为什么在代码(没有断点)完全执行后我无法看到临时表?如何才能在没有断点的情况下仍然看到临时表? - InTheSkies


创建一个测试表

SELECT * INTO ##temp1
FROM dbo.SomeTable_Name

现在检查表是否存在

SELECT  * FROM tempdb.dbo.sysobjects O
WHERE O.xtype in ('U') 
AND O.ID = OBJECT_ID(N'tempdb..##temp1')

1
2018-01-29 19:38