【发布时间】:2011-02-03 12:04:46
【问题描述】:
如果我使用 # 符号创建一个临时表:
SELECT * INTO #temp FROM dbo.table
这张桌子在哪里?我在 tempdb 中找不到这个。
【问题讨论】:
标签: sql sql-server sql-server-2005 sql-server-2008
如果我使用 # 符号创建一个临时表:
SELECT * INTO #temp FROM dbo.table
这张桌子在哪里?我在 tempdb 中找不到这个。
【问题讨论】:
标签: sql sql-server sql-server-2005 sql-server-2008
这些表是在您的 tempDB 中创建的 - 但表名称可能与您定义的不完全相同。
就我而言,我得到:
#temp______________________________000000000003
试试这个:
SELECT * INTO #temp FROM dbo.table
SELECT * FROM tempdb.sys.tables
您应该会看到您刚刚创建的临时表的条目....
【讨论】:
当您声明一个临时表时,SQL Sever 会在其名称上添加一些附加字符,以便为其提供唯一的系统名称,然后将其存储在 sysobjects 表的 tempDB 中。尽管您可以使用其逻辑名称查询临时表,但在内部使用 SQL Server 设置的确切名称是已知的。
【讨论】:
你是如何寻找他们的? 如果您进行选择,您将获得数据。 但该表仅在会话中可用,仅供创建它的用户使用(您可以拥有全局临时表)。
它们存储在临时数据库中。
【讨论】:
可以在表名之前使用井号 (#) 来创建本地临时表。
它们仅在当前连接中可见。当连接被删除时,它的范围也结束了。
可以在两个不同的连接中同时创建和使用同名的本地临时表。
阅读全文
http://sqlnetcode.blogspot.com/2011/11/there-is-already-object-named-temp-in.html
【讨论】:
我怀疑这个问题是因为如果您不右键单击并刷新“临时表”文件夹,SSMS 不会立即显示临时表。
【讨论】: