ITPUB??ì3
ITPUB论坛 » MS SQL Server » 谁能来解答一下呢?

标题: 谁能来解答一下呢?
离线 liujian_jed
初级会员



精华贴数 0
个人空间 124
技术积分 119 (15924)
社区积分 1 (44030)
注册日期 2005-11-13
论坛徽章:0
      
      

发表于 2007-5-10 14:41 
谁能来解答一下呢?

是这样的。
假设在一存储过程中我使用SELECT * INTO ##TEMP_TABLE FROM TABLE_NAME 创建了一个全局临时表,如果某一客户端在执行该存储过程的同时有其它的客户端执行同一存储过程。那么最终的查询结果是否还是客户需要的数据?如果不受影响的话,全局临时表是否在该存储过程结束时自动释放?


__________________
hello.eveyone
只看该作者    顶部
离线 hxd001_810
卡卡西


精华贴数 0
个人空间 0
技术积分 4373 (362)
社区积分 0 (1313164)
注册日期 2007-3-10
论坛徽章:6
管理团队成员会员2007贡献徽章授权会员生肖徽章2007版:蛇生肖徽章2007版:鼠 
      

发表于 2007-5-10 14:49 
如果多个客户端同时执行同一个(包含##TEMP_TABLE的)存储过程的话,在这些客户端上都能用到该全局临时表。
通常情况下,只要创建全局临时表的连接断开,全局临时表即被除去。


__________________
世界运行在数据上!
只看该作者    顶部
离线 liujian_jed
初级会员



精华贴数 0
个人空间 124
技术积分 119 (15924)
社区积分 1 (44030)
注册日期 2005-11-13
论坛徽章:0
      
      

发表于 2007-5-10 14:56 
谢谢师兄、师姐

如果多个客户端执行同一个创建(##temp table )的存储过程的话,又是一个什么样的情况呢?


__________________
hello.eveyone
只看该作者    顶部
离线 hxd001_810
卡卡西


精华贴数 0
个人空间 0
技术积分 4373 (362)
社区积分 0 (1313164)
注册日期 2007-3-10
论坛徽章:6
管理团队成员会员2007贡献徽章授权会员生肖徽章2007版:蛇生肖徽章2007版:鼠 
      

发表于 2007-5-10 15:06 
如果多个客户端同时执行同一个(包含##TEMP_TABLE的)存储过程的话,在这些客户端上都能用到该全局临时表。换句话说,该##TEMP_TABLE对这些客户端是共享的直至所有调用该存储过程的客户端的连接断开为止。


__________________
世界运行在数据上!
只看该作者    顶部
离线 liujian_jed
初级会员



精华贴数 0
个人空间 124
技术积分 119 (15924)
社区积分 1 (44030)
注册日期 2005-11-13
论坛徽章:0
      
      

发表于 2007-5-10 15:13 
当创建全局临时表的存储过程结束后,可以认为该连接已经断开了吗?


__________________
hello.eveyone
只看该作者    顶部
离线 caixia615
版主


精华贴数 2
个人空间 0
技术积分 6025 (257)
社区积分 5292 (328)
注册日期 2007-1-5
论坛徽章:10
生肖徽章2007版:牛生肖徽章2007版:鼠2008新春纪念徽章   
      

发表于 2007-5-10 15:19 
如果在未释放前同时执行这个过程应该要出错的,因为数据库中已经存在这张临时表,所以不可能出现两张同表名的临时表.


__________________
如果我是你眼中的一滴泪 我会努力的流下来流到你嘴裏, 因为我真的想吻你. 如果你是我眼中的一滴泪, 那麽我会永远不会哭泣, 因为我怕失去你...
只看该作者    顶部
离线 hxd001_810
卡卡西


精华贴数 0
个人空间 0
技术积分 4373 (362)
社区积分 0 (1313164)
注册日期 2007-3-10
论坛徽章:6
管理团队成员会员2007贡献徽章授权会员生肖徽章2007版:蛇生肖徽章2007版:鼠 
      

发表于 2007-5-10 15:23 
当创建全局临时表的存储过程结束后,可以认为该连接已经断开了吗?
----------------------------------
不是的。
应该是这样的:最初由第一个客户端在执行该存储过程后,即创建了全局临时表##TEMP_TABLE,因为同时又有其他客户端也调用该存储过程而使用##TEMP_TABLE,则 SQL Server在所有用户断开连接后才删除该临时表。


__________________
世界运行在数据上!
只看该作者    顶部
离线 liujian_jed
初级会员



精华贴数 0
个人空间 124
技术积分 119 (15924)
社区积分 1 (44030)
注册日期 2005-11-13
论坛徽章:0
      
      

发表于 2007-5-10 15:29 
那么会出现紫瞳说的那种情况吗?
谢谢师兄(师姐)!


__________________
hello.eveyone
只看该作者    顶部
离线 hxd001_810
卡卡西


精华贴数 0
个人空间 0
技术积分 4373 (362)
社区积分 0 (1313164)
注册日期 2007-3-10
论坛徽章:6
管理团队成员会员2007贡献徽章授权会员生肖徽章2007版:蛇生肖徽章2007版:鼠 
      

发表于 2007-5-10 15:59 
会出现的,但是对其他客户端来说,不会影响结果的,因为此时可以共享使用先前创建的##TEMP_TABLE的。


__________________
世界运行在数据上!
只看该作者    顶部
离线 liujian_jed
初级会员



精华贴数 0
个人空间 124
技术积分 119 (15924)
社区积分 1 (44030)
注册日期 2005-11-13
论坛徽章:0
      
      

发表于 2007-5-10 16:19 
我明白了。谢谢hxd001_8100和caixia615的解答。


__________________
hello.eveyone
只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰网域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:060528号 联系我们 法律顾问