在 CLR 存储过程中发出 HttpWebRequest 时(根据下面的代码),Sql Server (重新)启动后或给定(但不确定)时间段后的第一次调用会在GetResponse() 方法调用。
有什么方法可以解决这个不涉及“黑客”的问题,例如每隔几分钟运行一次 Sql Server 代理作业以尝试确保代理发出第一个“慢”调用而不是“真实”生产代码?
function SqlString MakeWebRequest(string address, string parameters, int connectTO)
{
SqlString returnData;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(String.Concat(address.ToString(), "?", parameters.ToString()));
request.Timeout = (int)connectTO;
request.Method = "GET";
using (WebResponse response = request.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(responseStream))
{
SqlString responseFromServer = reader.ReadToEnd();
returnData = responseFromServer;
}
}
}
response.Close();
return returnData;
}
(为简洁起见,已删除错误处理和其他非关键代码)
另请参阅此 Sql Server 论坛主题。