【发布时间】:2013-03-08 04:20:43
【问题描述】:
我在执行 Sql 时遇到问题,这实际上是 SqlServer 上存储过程的简单调用。
考虑下面的Sql存储过程:
CREATE PROCEDURE InfiniteLoop
AS
BEGIN
DECLARE @ixi NUMERIC(38) = 0
DECLARE @i NUMERIC(38) = 0
WHILE 1 = 1
BEGIN
SET @i = @i + 1
SET @ixi = @ixi * @i
PRINT N'some text'
END
END;
现在我以这种方式从 C# 调用此过程:
public void CallProcedure()
{
SqlCommand cmd = this._connection.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
command.CommandText = 'InfiniteLoop';
//Line below throws OutOfMemoryException
cmd.ExecuteNonQuery();
cmd.Dispose();
}
内存开始快速增长。几秒钟后抛出异常。 通常所有这些代码都使用“try/catch”和“using”部分,但我已经简化了这个 sn-p 以表明问题来自 SqlClient 库而不是直接来自我的代码。
【问题讨论】:
-
看起来你发现了一个关于
ExecuteNonQuery实现的有趣点。但是你的问题是什么?
标签: out-of-memory sqlcommand executenonquery