【问题标题】:How to see temp table created by code in sql server?如何查看sql server中代码创建的临时表?
【发布时间】:2014-02-21 19:10:10
【问题描述】:

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

可以这样做吗?如果是,那么如何?

【问题讨论】:

  • 但是在代码完全运行之后,临时表就消失了。这就是他们称之为温度的原因。
  • 狗仔队,代码运行后并非所有临时表都被删除。表变量通过这种方式被移除,但临时表不会在代码运行后自动移除。

标签: c# .net sql-server temp-tables global-temp-tables


【解决方案1】:

所有临时表都记录在 SQL server > Databases > System Databases > tempdb -> Temporary Tables 下

【讨论】:

  • SQL server > 数据库 > 系统数据库 > tempdb -> 临时表
  • 我在临时表下看不到任何临时表。
  • 尝试在创建临时表后下断点,然后签入 SSMS。不要忘记刷新临时表文件夹,因为它不会自动更新。 ##tables 即使在连接/会话断开后也应该保留。 #tables 仅存在于它们所在的会话中。
  • 我通过不关闭连接进行了尝试,但没有成功。我现在就试试断点。
  • 好的。断点有效。但是,为什么在代码(没有断点)完全执行后我看不到临时表?如何在没有断点的情况下仍然可以看到临时表?
【解决方案2】:

代码完成并关闭会话后,临时表将不复存在。如果您想在 SQL Server Management Studio (SSMS) 中查看它,您需要保持代码会话打开,直到在 SSMS 中查看数据。

Technet:

全局临时表对任何用户和任何连接都是可见的 创建后,当所有用户被删除时 引用表与 SQL Server 实例断开连接。

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

【讨论】:

    【解决方案3】:

    创建测试表

    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')
    

    【讨论】:

      猜你喜欢
      • 2013-07-10
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多