Wenn eine HttpWebRequest innerhalb einer CLR gespeicherten Prozedur (wie im Code unten), der erste Aufruf nach der Sql Server (neu) gestartet wird oder nach einem bestimmten (aber unbestimmten) Zeitraum wartet für eine ganze Länge der Zeit auf die GetResponse() Methode aufrufen.
Gibt es eine Möglichkeit, dies zu beheben, die nicht einen "Hack" wie mit einem Sql Server Agent Job alle paar Minuten ausgeführt, um zu versuchen und sicherzustellen, dass der erste "langsame" Aufruf durch den Agenten und nicht "echte" Produktionscode gemacht wird?
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;
}
(Fehlerbehandlung und anderer unkritischer Code wurde der Kürze halber entfernt)
Siehe auch dieser Sql-Server-Foren-Thread .