+ -
当前位置:首页 → 问答吧 → 对象名 '#temp' 无效的问题

对象名 '#temp' 无效的问题

时间:2011-12-13

来源:互联网

页面A上有一个查询按钮,点击后,连接数据库,创建本地临时表#temp,从#temp中查询,再断开连接
-----------
直接运行页面A,完全正常,现在我加了一个登录页面,登录成功后跳转到页面A,再查询,就会出现“对象名 '#temp' 无效”。

不明白为什么?应该怎么处理

作者: gaswei   发布时间: 2011-12-13

查完后断开,临时表#temp结束生命周期。

作者: liangCK   发布时间: 2011-12-13

#temp
只对当前连接
调用的批有效
连接一旦断开 就消失了

作者: wufeng4552   发布时间: 2011-12-13

局部临时表只在当前会话中有效。

作者: fredrickhu   发布时间: 2011-12-13

临时表

临时表有两种类型:本地表和全局表。在与首次创建或引用表时相同的 SQL Server 实例连接期间,本地临时表只对于创建者是可见的。当用户与 SQL Server 实例断开连接后,将删除本地临时表。全局临时表在创建后对任何用户和任何连接都是可见的,当引用该表的所有用户都与 SQL Server 实例断开连接后,将删除全局临时表。



临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。

临时表有两种类型:本地和全局。它们在名称、可见性以及可用性上有区别。本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 SQL Server 实例断开连接时被删除。全局临时表的名称以两个数字符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。

例如,如果创建了 employees 表,则任何在数据库中有使用该表的安全权限的用户都可以使用该表,除非已将其删除。如果数据库会话创建了本地临时表 #employees,则仅会话可以使用该表,会话断开连接后就将该表删除。如果创建了 ##employees 全局临时表,则数据库中的任何用户均可使用该表。如果该表在您创建后没有其他用户使用,则当您断开连接时该表删除。如果您创建该表后另一个用户在使用该表,则 SQL Server 将在您断开连接并且所有其他会话不再使用该表时将其删除。

临时表的许多用途可由具有 table 数据类型的变量替换。

作者: roy_88   发布时间: 2011-12-13

太深奥了

作者: masschoi   发布时间: 2011-12-13

一旦断开临时表将取消其连接。

作者: lzd_83   发布时间: 2011-12-13

临时表只对当前会话连接有效,断开连接后就收回了
可以用全局临时表##,两个#开头的

作者: pengxuan   发布时间: 2011-12-13

该回复于2011-12-13 14:17:24被管理员删除

  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
#9楼 得分:0回复于:2011-12-13 14:10:22

作者: Buddy99   发布时间: 2011-12-13

在你断开的时候,已经扼杀了他的小生命。。

作者: Buddy99   发布时间: 2011-12-13

引用 7 楼 pengxuan 的回复:

临时表只对当前会话连接有效,断开连接后就收回了
可以用全局临时表##,两个#开头的

全局的也不行吧

作者: Beirut   发布时间: 2011-12-13

我是在断开之前进行查询的啊,而且查询的代码我都没有改变,直接运行页面A时是可以查询到的,只是加了登录控制,跳转到页面A再查询就是提示对象名 '#temp' 无效

各位再帮我看看

作者: Beirut   发布时间: 2011-12-13

+1
引用 2 楼 wufeng4552 的回复:
#temp
只对当前连接
调用的批有效
连接一旦断开 就消失了

作者: gaswei   发布时间: 2011-12-13

麻烦各位仔细看看我的问题啊,我是先查询再断开连接的

我的问题是,直接运行页面A,点击“查询”按钮是可以成功查询到的,通过登录跳转到页面A再点击“查询”按钮是提示无效

作者: q465897859   发布时间: 2011-12-13

自己看你代码里是不是把原来的连接断了重新开了一个连接,只要断开了临时表就没了。

作者: gaswei   发布时间: 2011-12-13

急死我了~

如果是我查询代码那块断开了连接,那直接运行页面A为什么可以查询到啊

现在只是加入登录控制,登录成功再运行页面A,执行同样的代码就不成功了

作者: guguda2008   发布时间: 2011-12-13

临时表用完了就需要释放的。
不过在create之后,是不会在sqlserver里有保存的。不使用后,它会自己释放的。

作者: gaswei   发布时间: 2011-12-13

热门下载

更多