数据库执行sql的问题,各位帮忙

Water Lee 2020-01-09 01:26:07
本人用c#+sqlserver2005开发,测试时在本地局域网未出现问题,但放到阿里云后,其中一个服务会出现服务出错,跟踪错误后,发现服务内执行到对某张表的查询时报错,而这个查询可以确认sql及表都没有问题。开始怀疑是出现死锁,直接并将所有写了锁的地方取消了锁。但运行不到两天,又出现同样问题。 请各位给点建议,除了写了锁可能锁表,还有哪些情况表会被锁。或许不是锁的原因,那在什么情况下会导致一个表无法执行查询呢? 我现在是出现问题后只能重启服务,重启后会正常一段时间。
...全文
191 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Water Lee 2020-03-07
  • 打赏
  • 举报
回复
过了好久了,不有找到真正的原因,但连接字符串加了 Pooling=false 后出现频率已很低了,在代码里做了容错处理,至少可以正常跑了。感谢各位的帮忙!
Water Lee 2020-01-13
  • 打赏
  • 举报
回复
引用 8 楼 it_gz_xi的回复:
SELECT TOP 10 [session_id], [request_id], [start_time] AS '开始时间', [status] AS '状态', [command] AS '命令', dest.[text] AS 'sql语句', DB_NAME([database_id]) AS '数据库名', [blocking_session_id] AS '正在阻塞其他会话的会话ID', [wait_type] AS '等待资源类型', [wait_time] AS '等待时间', [wait_resource] AS '等待的资源', [reads] AS '物理读次数', [writes] AS '写次数', [logical_reads] AS '逻辑读次数', [row_count] AS '返回结果行数' FROM sys.[dm_exec_requests] AS der CROSS APPLY sys.[dm_exec_sql_text](der.[sql_handle]) AS dest WHERE [session_id]>50 AND DB_NAME(der.[database_id])='你的库名' ORDER BY [cpu_time] DESC 随手百度的
谢谢!等服务中断时我试下
it_gz_xi 2020-01-13
  • 打赏
  • 举报
回复
SELECT TOP 10 [session_id], [request_id], [start_time] AS '开始时间', [status] AS '状态', [command] AS '命令', dest.[text] AS 'sql语句', DB_NAME([database_id]) AS '数据库名', [blocking_session_id] AS '正在阻塞其他会话的会话ID', [wait_type] AS '等待资源类型', [wait_time] AS '等待时间', [wait_resource] AS '等待的资源', [reads] AS '物理读次数', [writes] AS '写次数', [logical_reads] AS '逻辑读次数', [row_count] AS '返回结果行数' FROM sys.[dm_exec_requests] AS der CROSS APPLY sys.[dm_exec_sql_text](der.[sql_handle]) AS dest WHERE [session_id]>50 AND DB_NAME(der.[database_id])='你的库名' ORDER BY [cpu_time] DESC 随手百度的
Water Lee 2020-01-10
  • 打赏
  • 举报
回复
引用 6 楼 it_gz_xi的回复:
自己查下执行那个SQL被挂起,检查下事务的逻辑是否有死锁
弱弱的问下,挂起的sql要怎样查,我一直想这样干,但不会呀!
it_gz_xi 2020-01-10
  • 打赏
  • 举报
回复
自己查下执行那个SQL被挂起,检查下事务的逻辑是否有死锁
Water Lee 2020-01-09
  • 打赏
  • 举报
回复
引用 3 楼 爱吃肉的羊呐的回复:
是整个程序只运行一次还是获取数据库的链接只有一次?再次启动显示端口被占用还是什么?程序获取Datatable为null那就说明连接数据库正常,但是数据库不存在相应的字段或者列!
程序是一直在运行的,因为服务器上调试不了,自己程序加了错误输出,只输出了一次错误,但发现主要是表读不到,但表和列都确实存在。重启服务后暂时可以正常运行。所以想知道是什么情况会读不到,不然定位不到错误。我首先做的就是把所有锁取消了。但好像不是锁的问题。我也只在服务里做些增查改删的操作,有几处用事务处理。现在怀疑会不会有事务一直挂起。但事务里连个循环都没有,头大了。
Water Lee 2020-01-09
  • 打赏
  • 举报
回复
引用 3 楼 爱吃肉的羊呐的回复:
是整个程序只运行一次还是获取数据库的链接只有一次?再次启动显示端口被占用还是什么?程序获取Datatable为null那就说明连接数据库正常,但是数据库不存在相应的字段或者列!
程序是一直在运行的,因为服务器上调试不了,自己程序加了错误输出,只输出了一次错误,但发现主要是表读不到,但表和列都确实存在。重启服务后暂时可以正常运行。所以想知道是什么情况会读不到,不然定位不到错误。我首先做的就是把所有锁取消了。但好像不是锁的问题。我也只在服务里做些增查改删的操作,有几处用事务处理。现在怀疑会不会有事务一直挂起。但事务里连个循环都没有,头大了。
爱吃肉的羊呐 2020-01-09
  • 打赏
  • 举报
回复
是整个程序只运行一次还是获取数据库的链接只有一次?再次启动显示端口被占用还是什么?程序获取Datatable为null那就说明连接数据库正常,但是数据库不存在相应的字段或者列!
Water Lee 2020-01-09
  • 打赏
  • 举报
回复
引用 1 楼 爱吃肉的羊呐的回复:
报的什么错误/?你能写出来?
只获取到一次,事务已结束,无法再次启动。还有就是程序里获取Datatable 为 null
爱吃肉的羊呐 2020-01-09
  • 打赏
  • 举报
回复
报的什么错误/?你能写出来?

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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