Reversão de transações pai filho

Eu tenho um cenário em que eu tenho que processar vários.sQL arquivos, cada arquivo contém de 3 a 4 consultas de inserção ou atualização, agora quando qualquer consulta em um arquivo falha,rollback transação inteira significa que todo arquivo é revertido e todos os outros arquivos executados antes que esse arquivo seja confirmado, eu quero uma opção em que o usuário possarollback transação inteira significa todas as consultas em um arquivo executado e todos os arquivos executados antes desse arquivo específico contendo erro, e se o usuário quiser pular esse arquivo específico com erro, apenasrollback arquivo único que contém erro, todos os outros arquivos serão confirmados, estou usando a transação SQL agora, nãoTransactionScope mas obviamente eu também posso mudarTransactionScope() se necessário e possível, atualmente pseudo para o meu código (o que eu quero) é o seguinte

Var Files[]
for each (string query in Files)
{
  Execute(Query)
IF(TRUE)
CommitQuery()
Else
result=MBOX("IF You want to abort all files or skip this one")
if(result=abort)
rollbackall()
else
QueryRollBack()
}

questionAnswers(2)

yourAnswerToTheQuestion