Теоретически, можно создавать столько соединений, сколько вы хотите.Воссоздание соединения выполняется быстро, если только вы не принудительно создадите пул без подключения.Стандартные соединения SQL не закрываются, а помещаются в пул (на две минуты, iirc) для повторного использования.
При этом, если вы открываете новое соединение для каждой вставки, с которой вы столкнулись с серьезными проблемами, - ваша транзакцияграницы.Более сложные обновления должны попадать под одну транзакцию.В то время как вы МОЖЕТЕ просто обернуть это в пространство имен System.Transaction ... ... это будет означать, что все соединения будут оставаться открытыми до фиксации, используя МНОГО их, и это вызовет MSDTC (координатор распределенных транзакций)вмешиваться - со всеми накладными расходами, которые у него есть.
Таким образом, повторное использование соединений гораздо более целесообразно с архитектурной точки зрения. Вы в основном зашли в тупик из-за своего транзакционного поведения, а не из-за количества соединений..