解决SqlTransaction用尽的问题(SQL处理超时)
有时候程序处理的数据量比较小时,四平八稳,一切安然无恙,但数据量一大,原先潜伏的问题就暴露无遗了。
原访问数据库的代码为:
1sqlconnection conn = new sqlconnection(strconn);
2conn.open();
3sqltransaction trans = conn.begintransaction();
4try
5{
6 cengine.executenonquery(trans,commandtype.text,sql);
7 trans.commit();
8}
9catch(sqlexception ex)
10{
11 trans.rollback();
12 errorcode = ex.number;
13 info = "数据操作失败:" + ex.message;
14}
15finally
16{
17 trans.dispose();
18 conn.close();
19}
20
21
22
运行时,一旦出现数据量过大或者处理时间较长,则系统会提示出错。错误提示为“sqltransaction已经用完;它再也不能使用。”
开始时,我怀疑是跟内存有关。因为系统需要做好事务回滚的准备,每执行一条插入或修改的sql,都要有一定的开销,数据量一大,恐怕就吃不消了。不过我查了一下sql server的资料,未见提到内存的问题。
后来想到,数据库连接sqltransaction有个时间问题。默认是15秒。数据量大的时候,这个时间很可能就不够了。于是改为:
1sqlconnection conn = new sqlconnection(strconn);
2conn.open();
3sqltransaction trans = conn.begintransaction();
4try
5{
6 sqlcommand cmd = new sqlcommand();
7 cmd.commandtype = commandtype.text;
8 //连接时限改为300秒
9 cmd.commandtimeout = 300;
10 cmd.commandtext = sql;
11 cmd.connection = conn;
12 cmd.transaction = trans;
13 cmd.executenonquery();
14 trans.commit();
15}
16catch(sqlexception ex)
17{
18 trans.rollback();
19 errorcode = ex.number;
20 info = "数据操作失败:" + ex.message;
21}
22finally
23{
24 trans.dispose();
25 conn.close();
26}
修改后在测试,问题解决:)
- · 以前编写Like谓词被忽略的使用方法
- · 在编写存储过程时使用 Set NoCount On
- · ASP.NET 2.0运行时简要分析
- · .Net中如何操作IIS(原理篇)
- · 用.net开发不同操作系统下应用的winform的size大小问题
- · SQL Server数据库文件恢复技术
- · SQL SERVER中一些常见性能问题的总结
- · .NET下对二进制文件进行加密解密(C#)
- · 利用.NET的File控件上传文件的最终解决方案(个人版)
- · 如何把图片、声音等存储到sql中
- · MS-SQL server数据库开发精典技巧
- · 全文索引—CONTAINS语法
- · 获得所有表信息的SQL语句
- · .NET扫描远程计算机注册表
- · 利用JS获取IE客户端IP及MAC的实现
- · 简单而又复杂的ASP.NET编程模型
- · C#2.0终于有了?:便捷判断的单分支版
- · SQL Server 2005 Data Mining简介
- · ASP.NET控件开发之
- · ASP.NET中用哪种方式表格化数据
- · .NET平台下几种SOCKET模型的简要性能供参考
- · 使用 XML 模板 (MSSQL手册)
- · 使用带批注的 XDR 架构创建 XML 视图
- · 在XPath查询中指定轴(转自MSSQL手册)
- · JavaScript极速狂飙:CSS样式表的背景渲染效率
- · javascript应用:实现复选框全选/全不选切换
- · JavaScript极速狂飙:大容量字符型数组的快速检索
- · JavaScript极速狂飙:组合拼接字符串的效率
- · 图片自动缩小的js代码,用以防止图片撑破页面
- · PHP漏洞中的战争
- · automation服务器不能创建对象
- · Oracle数据库的备份及恢复策略研究
- · PHP程序加速探索之脚本执行速度测试
- · PHP中路径问题的解决方案
- · 学以致用 驳“ASP低能论”
- · 另类扩展名同样执行ASP
- · 语言决不是语法的不同之.NET 版本计算表达式的值
- · ASP中实现的类似URLEncode的编码函数及对应解码函数
- · 数据对象扩展成默认组件 PHP开发小组发布PHP5.1.0
- · ASP.NET 揭秘 ASP.NET页面的结构
- · 关于Sql server数据库日志满的快速解决办法
- · PHP+MySQL分页显示示例分析
- · ORACLE SQL性能优化系列(九)
- · ORACLE SQL性能优化系列(七)
- · ORACLE SQL性能优化系列(八)
- · JSP渐进学习教程4
- · ORACLE SQL性能优化系列(三)
- · ORACLE SQL性能优化系列(二)
- · ORACLE SQL性能优化系列(四)
- · ORACLE SQL性能优化系列(五)
- · ORACLE SQL性能优化系列(六)
- · ORACLE SQL性能优化系列(一)
- · JSP渐进学习教程7
- · JSP渐进学习教程6
- · JSP渐进学习教程5
- · JSP渐进学习教程9
- · JSP渐进学习教程8
- · 用多活动结果集优化ADO.NET2.0数据连接
- · PHP 5.0 的变化与PHP 6.0 展望
- · C#中从HTML生成DOM TreeView的代码

