Я бы открывал соединение, проходил через цикл столько раз, сколько необходимо, а затем закрывал соединение. Открытие и закрытие очень дорого. Но, благодаря Митчу Уиту и Дэйву Марклу, я узнал, что пул соединений выполняется бесплатно в фоновом режиме с .NET, поэтому расходы должны амортизироваться по всем вашим запросам.
Еще лучше, я бы пакетировал запросы в цикле и выполнял пакет после завершения цикла. Таким образом, вам требуется только одно сетевое соединение.
Если вы согласны с этим последним битом, я бы позаботился о том, чтобы пакет INSERT был выполнен в контексте транзакции, чтобы его можно было зафиксировать или откатить как одну единицу работы. Изоляция и безопасность резьбы будут иметь значение.