может оказаться полезным в более общем случае сценарий, который использовался для реализации "репликации"
имеется два соединения
в первом:
создается глобальная временная таблица с без признака identity для полей
в нее заливаются данные
во втором вызывается хранимая процедура выполняющая следующие действия
update существующих записей (у нас была возможность знать есть ли изменения)
insert несуществующих записей
разумеется, что была обработка уникальных индексов и других возможных проблем
такой подход не требовал внешней транзакции, и работа пользователя практически не прерывалась (меньшая длительность блокировок)