Я запускаю несколько экземпляров одного скрипта PowerShell, который отслеживает общую папку для новых файлов JSON, а затем загружает эти файлы JSON в базу данных SQL Azure для преобразования в табличные данные.Я запускаю несколько экземпляров сценария, чтобы у меня была избыточность и большая пропускная способность для загрузки файлов, поскольку в общей папке часто находятся десятки файлов JSON, которые необходимо загрузить.
Моя проблема в том, что иногда один экземпляр скрипта запускает метод ExecuteNonQuery()
из класса System.Data.SqlClient.SqlCommand
и просто зависает.Обычно это просто приводит к зависанию одного экземпляра скрипта, но иногда он останавливает один или несколько других запущенных экземпляров скрипта.Как только я закрываю инстанс-нарушитель, все остальное снова начинает работать нормально.
Вчера я также заметил, что совершенно не связанный скрипт PowerShell, который также использует класс System.Data.SqlClient.SqlCommand
, стартовал, когда другой скрипт висел, и он тоже завис, пока не закрылось первое окно скрипта.
Мой вопрос: как мне исследовать и решить эту проблему?Я предполагаю, что PowerShell каким-то образом разделяет ресурсы между сценариями, и если один сценарий блокирует эти ресурсы, то всем остальным сценариям не повезло.Есть ли какой-нибудь способ обойти это, или лучший метод программирования, чтобы использовать, когда это происходит?