如何保证一个存储过程在同一时间只被一个线程调用?

chengfeng 2006-10-30 03:34:33
我是asp程序,其中有个调用的存储过程耗时较长,如果多个用户同时调用会不会导致阻塞?
如何保证同一时间这个存储过程只被执行一次
...全文
167 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2006-10-30
  • 打赏
  • 举报
回复
要防止同一存储过程同时被调用, 简单的方法就是在存储过程开始的地方开启一个锁, 存储过程结束的时候释放锁

zjcxc 元老 2006-10-30
  • 打赏
  • 举报
回复
多个存储过程被同时调用

是否会阻塞取决于你的存储过程的内容.
sql的设计是并发执行的, 也就是多个用户可以同时调用同一存储过程, 每个用户的调用都是独立运行的, 而且都是在调用时会执行的.

但如果你的存储过程产生了锁(或者不是你的存储过程产生的), 这个锁导致你的存储过程的某些处理无法通过的话, 则存储过程就被阻塞了.

所以是否被阻塞, 与存储过程是否被同时调用没有关系, 只是与锁有关系.
playwarcraft 2006-10-30
  • 打赏
  • 举报
回复
在asp中先防制多人同時調用,比如有人在執行某個頁面,其他人就進不去
zlp321002 2006-10-30
  • 打赏
  • 举报
回复
--在调用的时候用事务.阻塞是很难控制的.
i9988 2006-10-30
  • 打赏
  • 举报
回复
1、阻塞一般不会单纯是因为同时调用同一个存储过程引起的
2、“如何保同一时间这个存储过程只被执行一次”是很难做到的,但是有简单的变通方法,比如用表记录存储过程调用,在存储过程中先访问这个表,如果能访问则用表锁锁定这个表,然后执行其他功能,知道执行完才释放表锁

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧