В вашем коде вы читаете все строки из таблицы и толкаете их одну за другой, и это в бесконечном цикле.Если в вашей таблице более 60 строк, вы достигнете limit для запросов строк POST в минуту.Ограничения следующие:
- 75 макс. Столбцов
- 75 макс. Таблиц
- 10 000 макс. Строк на один запрос POST-строк
- 1 000 000 строк добавленов час на набор данных
- 5 макс. ожидающих запросов строк POST на набор данных
- 120 запросов строк POST в минуту на набор данных
- Если в таблице 250 000 или болеестрок, 120 запросов POST строк в час на набор данных
- 200 000 макс. строк, хранящихся на таблицу в наборе данных FIFO
- 5 000 000 макс. строк, хранящихся на таблицу в наборе данных «Политика хранения отсутствует»
- 4000 символов на значение для строкового столбца в операции строк POST
Это означает, что вам не разрешено делать более 120 запросов портов в минуту, но вы можете добавить до 10 тысяч строк за одну запись,поэтому просто измените свой код, чтобы прочитать все строки из вашей таблицы (при условии, что они меньше 10 КБ) и отправить их в набор потоковых данных с помощью одного пост-запроса.Таким образом, вы будете делать только 2 запроса в минуту, и вы не получите ответ 429.
Если вы не включите анализ исторических данных, набор данных будет сохранять строки только в течение последнего часа.Если вы включите его, количество строк будет расти, а если их станет больше 250К, ограничение в 120 сообщений в минуту будет снижено до 120 за час , таким образом, вы попадете в него, даже если есть2 строки в вашей таблице.Так что это может объяснить разницу.
Для одновременного удаления всех строк из набора данных необходимо переместить вызов API после цикла.Вместо этого используйте цикл для инициализации массива со всеми строками и отправьте этот массив в службу.Измените цикл так, чтобы он выглядел так:
## structure the JSON payload
$AllRows = @()
while ($SqlDataReader.Read()) {
$CurrentRow = @{
"name" =$SqlDataReader['name']
"queueTime" = $SqlDataReader['queueTime']
"promisedTime" =$SqlDataReader['promisedTime']
"sys_datetime" = $SysDateTime
}
$AllRows += $CurrentRow
}
Invoke-RestMethod -Method Post -Uri "$endpoint" -Body (ConvertTo-Json $AllRows)