Я создал пакет служб SSIS с ScriptTask для вызова API REST.
Ниже приведена задача сценария C #, которую я написал в пакете служб SSIS:
public void Main()
{
string serviceHostUrl = Dts.Variables["ParameterTestServiceHostURL"].Value.ToString();
string serviceHostApiKey = Dts.Variables["ParameterTestServiceHostApiKey"].Value.ToString();
string apiName = Dts.Variables["ParameterApiName"].Value.ToString();
string serviceHostApiEndPoint = String.Format("{0}/json/reply/{1}", serviceHostUrl, apiName);
string requestData = Dts.Variables["ParameterRequestData"].Value.ToString();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceHostApiEndPoint);
request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = requestData.Length;
request.Headers.Add("x-api-key", serviceHostApiKey);
request.Timeout = 3600000; //1 hour timeout
StreamWriter requestWriter = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII);
requestWriter.Write(requestData);
requestWriter.Close();
try
{
WebResponse webResponse = request.GetResponse();
Stream webStream = webResponse.GetResponseStream();
StreamReader responseReader = new StreamReader(webStream);
string response = responseReader.ReadToEnd();
Console.Out.WriteLine(response);
responseReader.Close();
Dts.TaskResult = (int)ScriptResults.Success;
}
catch (Exception e)
{
Console.Out.WriteLine("-----------------");
Console.Out.WriteLine(e.Message);
Dts.TaskResult = (int)ScriptResults.Failure;
}
}
Я установилЯвный тайм-аут в течение 1 часа, но он по-прежнему завершается ошибкой со следующей ошибкой ровно через 1 минуту выполнения, но я вижу, что служба продолжает обрабатывать, пока все ее операции не будут завершены.Это означает, что выполнение службы выполнено успешно, но пакет служб SSIS выдает исключение.
Выполнено как пользователь: qasql_svc.----------------- Базовое соединение было закрыто: при получении произошла непредвиденная ошибка.Microsoft (R) SQL Server Execute Package Utility версии 11.0.6020.0 для 64-разрядных продуктов. Copyright (C) Microsoft Corporation.Все права защищены.Начато: 8:02:06. Ошибка: 2018-10-24 08: 03: 07.25 Код: 0x00000006 Источник: InvokeAPI Описание: Сценарий вернул результат ошибки.Ошибка завершения DTExec: выполнение пакета вернуло DTSER_FAILURE (1).Начато: 8:02:06. Закончено: 8:03:07. Прошло: 60.422 секунд.Не удалось выполнить пакет.Шаг завершился неудачей.
Когда я пытаюсь запустить тот же API REST через Postman, я могу видеть статус успеха без каких-либо исключений, что заставляет меня поверить, что нет проблем с REST API или его конфигурацией.Но что-то отсутствует или требует исправления в пакете служб SSIS или на уровне его конфигурации.
Может кто-нибудь предложить здесь?
Спасибо