日期:2014-05-18  浏览次数:20486 次

sqlserver用CLR实现自治事务的问题
我是按照这里的代码操作的
http://blog.csdn.net/xman_78tom/article/details/5912164


能实现自治事务确实没有问题,但是在哪怕单个session循环插入的情况下,都会经常报错:

“在执行用户定义例程或聚合 "ExecuteATStmt" 期间出现 .NET Framework 错误: System.Data.SqlTypes.SqlNullValueException: Data is Null. This method or property cannot be called on Null values. System.Data.SqlTypes.SqlNullValueException: at System.Data.SqlTypes.SqlString.get_Value() at System.Data.SqlTypes.SqlString.op_Explicit(SqlString x) at AutoTran.ExecuteATStmt(SqlString sql, SqlString dbname, SqlInt16 iso) 。”

而且越到后面插入的速度会越来越慢。
简单的插入10000行记录,正常的insert花费17秒就结束了,可是调用上面方法的话,在大概3000多行的时候就插的特别慢,一秒进3,4行的记录,而且还频繁报上面的错误。

请问那个编译成DLL的C#代码,是不是有什么潜在的性能上的bug?

------解决方案--------------------
比如说存储过程的返回值、变量未赋值、传递的参数为空、对不能为空的字段赋null值等。
------解决方案--------------------
猜想啊
楼主是不是循环调用了博客当中的那个dll了?
如果是的话那么就很明显了,每次调用就建立会话,而且没有建立连接池调用的多了会话多了自然就会慢下来。
楼主可以尝试加上连接池试试
希望对你有帮助。
=========================================================================================

欢迎访问我的博客