SqlTransaction.Save
не «сохраняет» транзакцию, вместо этого она создает точку сохранения транзакции, которая является чем-то совершенно другим:
Создает точку сохранения в транзакции
которые могут быть использованы для отката части
транзакции и указывает
имя точки сохранения.
Точку сохранения можно использовать за до транзакции совершено, чтобы частично откатить часть работы, выполненной транзакцией. Типичным примером может быть попытка выполнить обновление, которое может завершиться неудачей, поэтому вы создаете точку сохранения перед выполнением обновления, а в случае сбоя вы возвращаетесь к точке сохранения, тем самым сохраняя всю работу, выполненную до Точка сохранения.
См. Обработка исключений и вложенные транзакции для примера использования точек сохранения.
Теперь вернемся к вашему вопросу: существует ли способ для соединения, чтобы начать соединение, закрыть его, а при повторном открытии выбрать такую же транзакцию ? Технически это происходит с использованием (сейчас не рекомендуется) sp_getbindtoken
и sp_bindsession
. Но это просто любопытство, для вас нет абсолютно никакого действительного сценария попытки «повторно использовать» транзакцию в двух разных сеансах (два повторных открытия соединения).