如何从 SQL CLR 例程中引发 SQL Server 错误事件(类似于 RAISERROR)?
问问题
2147 次
2 回答
3
理论上,基于我从我们的一位开发人员那里获得的代码示例:
try
{
response = service.ProcessThisInfo(info);
}
catch (Exception ex)
{
returnCode = Convert.ToInt32(ErrorEnum.SomeError);
string msg = string.Format("RAISERROR('{0}',16,1)", ex.Message.Replace('\'', ' '));
SqlCommand cmd = new SqlCommand(msg, connection);
try
{
SqlContext.Pipe.ExecuteAndSend(cmd);
}
catch { } // stop duplicate exception throwing...
}
在实践中,也许不是这是 sql 2005 中的问题
于 2009-02-04T19:01:44.237 回答
0
我认为如果你尝试这个,你只会得到一个令人讨厌的错误。MSDN 上的 SqlContext.Pipe.ExecuteAndSend(cmd) 有一个有趣的示例http://msdn.microsoft.com/en-us/library/ms255336(VS.80).aspx它不经过修改就无法工作,如果您将其更改为发送 raiserror,它会变成 dolally 并向您发送 NET 异常。你不能用函数来做到这一点。
就最初的问题而言,我想说它(从 CLR 函数中引发 SQL Server 错误)在 SQL Server 2005 中是不可能的,但可以通过 CLR 过程来完成。
于 2009-03-01T21:23:26.183 回答