ITPUB论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
更多
查看: 3680|回复: 10

谁能来解答一下呢? [复制链接]

注册会员

初级会员

精华贴数
0
技术积分
141
社区积分
1
注册时间
2005-11-13
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:19:59
发表于 2007-5-10 14:41:27 |显示全部楼层
是这样的。
假设在一存储过程中我使用SELECT * INTO ##TEMP_TABLE FROM TABLE_NAME 创建了一个全局临时表,如果某一客户端在执行该存储过程的同时有其它的客户端执行同一存储过程。那么最终的查询结果是否还是客户需要的数据?如果不受影响的话,全局临时表是否在该存储过程结束时自动释放?

版主

卡卡西

精华贴数
0
技术积分
4377
社区积分
0
注册时间
2007-3-10
论坛徽章:
12
会员2007贡献徽章
日期:2007-09-26 18:42:102011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:01生肖徽章2007版:鸡
日期:2009-11-07 14:03:15生肖徽章2007版:蛇
日期:2008-03-26 08:30:39生肖徽章2007版:鼠
日期:2008-01-02 17:35:53授权会员
日期:2007-12-26 16:34:03管理团队成员
日期:2011-05-07 01:45:08
发表于 2007-5-10 14:49:03 |显示全部楼层
如果多个客户端同时执行同一个(包含##TEMP_TABLE的)存储过程的话,在这些客户端上都能用到该全局临时表。
通常情况下,只要创建全局临时表的连接断开,全局临时表即被除去。

使用道具 举报

注册会员

初级会员

精华贴数
0
技术积分
141
社区积分
1
注册时间
2005-11-13
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:19:59
发表于 2007-5-10 14:56:48 |显示全部楼层

谢谢师兄、师姐

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

使用道具 举报

版主

卡卡西

精华贴数
0
技术积分
4377
社区积分
0
注册时间
2007-3-10
论坛徽章:
12
会员2007贡献徽章
日期:2007-09-26 18:42:102011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:01生肖徽章2007版:鸡
日期:2009-11-07 14:03:15生肖徽章2007版:蛇
日期:2008-03-26 08:30:39生肖徽章2007版:鼠
日期:2008-01-02 17:35:53授权会员
日期:2007-12-26 16:34:03管理团队成员
日期:2011-05-07 01:45:08
发表于 2007-5-10 15:06:21 |显示全部楼层
如果多个客户端同时执行同一个(包含##TEMP_TABLE的)存储过程的话,在这些客户端上都能用到该全局临时表。换句话说,该##TEMP_TABLE对这些客户端是共享的直至所有调用该存储过程的客户端的连接断开为止。

使用道具 举报

注册会员

初级会员

精华贴数
0
技术积分
141
社区积分
1
注册时间
2005-11-13
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:19:59
发表于 2007-5-10 15:13:53 |显示全部楼层
当创建全局临时表的存储过程结束后,可以认为该连接已经断开了吗?

使用道具 举报

注册会员

人生如梦

精华贴数
2
技术积分
6215
社区积分
5310
注册时间
2007-1-5
论坛徽章:
11
生肖徽章2007版:鼠
日期:2008-04-07 19:47:40ITPUB元老
日期:2010-01-20 10:16:00
发表于 2007-5-10 15:19:05 |显示全部楼层
如果在未释放前同时执行这个过程应该要出错的,因为数据库中已经存在这张临时表,所以不可能出现两张同表名的临时表.

使用道具 举报

版主

卡卡西

精华贴数
0
技术积分
4377
社区积分
0
注册时间
2007-3-10
论坛徽章:
12
会员2007贡献徽章
日期:2007-09-26 18:42:102011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:01生肖徽章2007版:鸡
日期:2009-11-07 14:03:15生肖徽章2007版:蛇
日期:2008-03-26 08:30:39生肖徽章2007版:鼠
日期:2008-01-02 17:35:53授权会员
日期:2007-12-26 16:34:03管理团队成员
日期:2011-05-07 01:45:08
发表于 2007-5-10 15:23:13 |显示全部楼层
当创建全局临时表的存储过程结束后,可以认为该连接已经断开了吗?
----------------------------------
不是的。
应该是这样的:最初由第一个客户端在执行该存储过程后,即创建了全局临时表##TEMP_TABLE,因为同时又有其他客户端也调用该存储过程而使用##TEMP_TABLE,则 SQL Server在所有用户断开连接后才删除该临时表。

使用道具 举报

注册会员

初级会员

精华贴数
0
技术积分
141
社区积分
1
注册时间
2005-11-13
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:19:59
发表于 2007-5-10 15:29:17 |显示全部楼层
那么会出现紫瞳说的那种情况吗?
谢谢师兄(师姐)!

使用道具 举报

版主

卡卡西

精华贴数
0
技术积分
4377
社区积分
0
注册时间
2007-3-10
论坛徽章:
12
会员2007贡献徽章
日期:2007-09-26 18:42:102011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:01生肖徽章2007版:鸡
日期:2009-11-07 14:03:15生肖徽章2007版:蛇
日期:2008-03-26 08:30:39生肖徽章2007版:鼠
日期:2008-01-02 17:35:53授权会员
日期:2007-12-26 16:34:03管理团队成员
日期:2011-05-07 01:45:08
发表于 2007-5-10 15:59:01 |显示全部楼层
会出现的,但是对其他客户端来说,不会影响结果的,因为此时可以共享使用先前创建的##TEMP_TABLE的。

使用道具 举报

注册会员

初级会员

精华贴数
0
技术积分
141
社区积分
1
注册时间
2005-11-13
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:19:59
发表于 2007-5-10 16:19:03 |显示全部楼层
我明白了。谢谢hxd001_8100和caixia615的解答。

使用道具 举报

相关内容推荐
您需要登录后才可以回帖 登录 | 注册

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 邮箱 虎吧 老博客 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
CopyRight 1999-2011 itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001 广播电视节目制作经营许可证:编号(京)字第1149号
  
回顶部