如何从SQL CLR例程中引发SQL Server错误事件(类似于RAISERROR)?
答案 0 :(得分: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...
}
In practise, maybe not这是sql 2005中的一个问题
答案 1 :(得分:0)
如果您尝试这个,我认为您只会遇到一个令人讨厌的错误。在http://msdn.microsoft.com/en-us/library/ms255336(VS.80).aspx MSDN上的SqlContext.Pipe.ExecuteAndSend(cmd)有一个有趣的示例。它在没有修改的情况下无法工作,如果您将其更改为发送了一个raiserror,它会干净利落地发回给您一个NET例外。你不能用一个功能来做。
就原始问题而言,我说它(在CLR函数中引发SQL Server错误)在SQL Server 2005中是不可能的,但可以通过CLR程序完成。