0

我查看了 Stackoverflow 并在这里发现了几乎相同的问题。一年前有人问过,还没人回答。也许我会比 user1038334 更幸运,有人会帮助我。

我有一个 SQL CLR 存储过程,它可以正常工作好几天,直到发生奇怪的事情。我的存储过程更新表并返回一个值作为结果代码。因此,通过查看此值,我可以确定是否出现问题。问题在于接收这个结果值。C# 代码在接收到返回值时引发异常。

var returnValue = new SqlParameter {Direction = ParameterDirection.ReturnValue};
command.Parameters.Add(returnValue);

connection.Open();
command.ExecuteNonQuery();

return (int)returnValue.Value; //<-- here is an exception

最有趣的是,如果我连接 SQL Profiler,捕获查询,然后在 SQL Server Management Studio 中执行此查询,我仍然可以毫无问题地获得结果值:

DECLARE @RC INT
EXECUTE @RC = MyClrStoreProc
SELECT @RC

一旦我重新发布 CLR 程序集或重新启动 SQL Server,一切都会得到修复。

我很确定这种奇怪的行为应该是有原因的,但我找不到。

  • SQL Server 版本:Microsoft SQL Server Developer Edition(64 位)-v.10.50.1765.0

  • 主机操作系统版本:Microsoft Windows NT 6.1 (7601)

  • .Net版本:v4.0.30319

任何帮助将不胜感激。

4

1 回答 1

1

这是一个 SQL Server 错误,累积更新包 8修复了该问题。

于 2012-06-07T07:50:03.447 回答