【问题标题】:Where temp tables are located?临时表在哪里?
【发布时间】:2011-02-03 12:04:46
【问题描述】:

如果我使用 # 符号创建一个临时表:

SELECT * INTO #temp FROM dbo.table

这张桌子在哪里?我在 tempdb 中找不到这个。

【问题讨论】:

    标签: sql sql-server sql-server-2005 sql-server-2008


    【解决方案1】:

    这些表在您的 tempDB 中创建的 - 但表名称可能与您定义的不完全相同。

    就我而言,我得到:

    #temp______________________________000000000003
    

    试试这个:

    SELECT * INTO #temp FROM dbo.table
    SELECT * FROM tempdb.sys.tables
    

    您应该会看到您刚刚创建的临时表的条目....

    【讨论】:

    • 并测试,比如说,存在... OBJECT_ID('tempdb..#temp')
    【解决方案2】:

    当您声明一个临时表时,SQL Sever 会在其名称上添加一些附加字符,以便为其提供唯一的系统名称,然后将其存储在 sysobjects 表的 tempDB 中。尽管您可以使用其逻辑名称查询临时表,但在内部使用 SQL Server 设置的确切名称是已知的。

    【讨论】:

      【解决方案3】:

      你是如何寻找他们的? 如果您进行选择,您将获得数据。 但该表仅在会话中可用,仅供创建它的用户使用(您可以拥有全局临时表)。

      它们存储在临时数据库中。

      【讨论】:

        【解决方案4】:

        可以在表名之前使用井号 (#) 来创建本地临时表。

        它们仅在当前连接中可见。当连接被删除时,它的范围也结束了。

        可以在两个不同的连接中同时创建和使用同名的本地临时表。

        阅读全文

        http://sqlnetcode.blogspot.com/2011/11/there-is-already-object-named-temp-in.html

        【讨论】:

          【解决方案5】:

          我怀疑这个问题是因为如果您不右键单击并刷新“临时表”文件夹,SSMS 不会立即显示临时表。

          【讨论】: