我的表为何会被锁

风影枫林 2011-06-19 02:32:43
现有3个程序 A,B,C(不是3个线程,是3个单独的程序)
程序A每次到整点都执行13条左右的insert into data语句
程序B每次到整点过5分都执行几十条insert into data语句,然后执行delete语句
程序C每次到整点过10分都执行几十条insert into data语句,然后执行delete语句


--程序A的执行语句
insert into data(STID,SurveyTime,WaterLevel,SumRainfall,HourRainfalll,DayRainfall,Voltage,State) values('SYQSSI00000000000019',convert(datetime,'2011-06-19 14:00:00',121),55.82,0.0,0.0,0,13.60,0);

--程序B的执行语句是
insert into data(STID,SurveyTime,WaterLevel,SumRainfall,HourRainfalll,DayRainfall,Voltage,State) values('SYQSSI00000000000019',convert(datetime,'2011-06-19 14:00:00',121),55.82,0.0,0.0,0,13.60,0);
delete a from data a where ID not in (select max(ID) from data where SurveyTime=a.SurveyTime group by stid);

--程序C与B的执行语句相同



...全文
80 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sadikaqy 2011-06-20
  • 打赏
  • 举报
回复
楼主使用事务看下能不能执行成功
cd731107 2011-06-20
  • 打赏
  • 举报
回复
利用排除法,程序C先暂停使用,看程序A和程序B是否正常,
不正常的化,在程序C上找原因,正常的化再暂停B,看A是否正常
。。。。。依此类推
liang145 2011-06-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huang005x 的回复:]

我都没有使用事物
都是使用的JDBC连接的
[/Quote]
貌似insert本身就系一個事務吧?
风影枫林 2011-06-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cd731107 的回复:]
利用排除法,程序C先暂停使用,看程序A和程序B是否正常,
不正常的化,在程序C上找原因,正常的化再暂停B,看A是否正常
。。。。。依此类推
[/Quote]

这种方法我也想过,但业主现在不让我暂停程序, 中个程序都是更新数据用的,暂停了数据就不能更新了
风影枫林 2011-06-19
  • 打赏
  • 举报
回复
各位,救救我吧,这个问题都捆饶我好多天了,
表被锁住了就不能查询了,系统就完全用不了了
风影枫林 2011-06-19
  • 打赏
  • 举报
回复

--我执行
select * from sysobjects where id = 1522104463
--的结果是下面的数据

Data 1522104463 U 1 0 0 0 0 0 2010-12-28 17:06:48.783 0 0 0 U 1 3 0 2010-12-28 17:06:48.783 0 0 0 0 0 0 0

风影枫林 2011-06-19
  • 打赏
  • 举报
回复
我都没有使用事物
都是使用的JDBC连接的
hredrickhu 2011-06-19
  • 打赏
  • 举报
回复
你事物的隔离级别是不是最高?也就是串行化?

34,590

社区成员

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

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