事务处理的时候,能不能访问事务处理中的表?

chlei 2011-10-09 02:22:20
有两个表Table1和Table2

在一个批处理程序中,读取Table1的数据,写入Table2里,整个程序执行时间要一个小时左右
这个过程中用到了事务。
另外一个网页程序Page1,只是读取上面两个表的数据

在批处理执行的过程中,Page1的页面不能打开,报出超时的错误

这是为什么呢?因为事务中的数据被锁住了吗?

有什么方法能使Page1访问两个表的数据而不出错吗?
...全文
116 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
火才松 2011-10-13
  • 打赏
  • 举报
回复
table1写入table2,那么table2就有排它锁了,读不了table2的数据啦。而你的Page1又要读table2的数据,当然会超时啦。
还是要修改一下批处理,一个小时太长了。大数据量的导入的话,就用bulk 操作,会快很多。要是复杂逻辑的话,那就要分解为几个事务来片了啊。
快溜 2011-10-11
  • 打赏
  • 举报
回复
事务好像不影响表的查询吧。
SQL777 2011-10-11
  • 打赏
  • 举报
回复
加了WITH(NOLOCK) 查询是可以查询了,但不保证你查询的结果就是正确的
蝈蝈(GuoGuo) 2011-10-11
  • 打赏
  • 举报
回复
不可想象,事务需要这么长的时间。其实只要查询中加with (nolock)是可以的。
CalvinR 2011-10-11
  • 打赏
  • 举报
回复
哎呀 没见过楼主的这种 事物到常用
-晴天 2011-10-09
  • 打赏
  • 举报
回复
如果程序要执行一个小时,那必定是对数据库的大规模动作,这个时候,还是建议别对数据库进行其他操作,以免发生一些无法预料的结果.
sxw_song 2011-10-09
  • 打赏
  • 举报
回复
要看锁的类型。select 有时看不到正在修改的数据。事务提交之后,才能看到
--小F-- 2011-10-09
  • 打赏
  • 举报
回复
整个程序执行时间要一个小时左右?
太长了 建议分成几个事务

锁住了的话 用with(nolock)
NBDBA 2011-10-09
  • 打赏
  • 举报
回复
1、一个小时的事务应该是不合理的,考虑下
2、查询用with(nolock)试下

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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