Você pode encontrar um guia bastante abrangente para essa pergunta aqui , mas, para resumir, o SQL Server não retornará o controle ao aplicativo que confirmou uma transação até que essa transação tenha sido protegida em disco. Especificamente, depois de endurecido no arquivo de log de transações, o controle pode ser retornado.
Os dados, neste momento, podem não estar protegidos no arquivo de dados, ainda podem estar no cache do buffer de dados, mas, como foram protegidos no log de transações, a recuperação do banco de dados, no caso de uma falha, pode recuperar isso. transação e persista as alterações com segurança.
Há um cache do buffer de log na memória usado para reduzir os impactos no desempenho das gravações sequenciais nos logs de transações. O buffer é liberado para o disco em várias condições, mas uma delas é uma confirmação de transação. Até que esses dados sejam protegidos, o controle não será retornado ao responsável pela chamada, portanto, mesmo se houver uma falha durante a liberação do buffer, a consistência transacional será mantida, porque essa transação ainda não foi considerada confirmada. Você perderá as alterações de dados nessa transação, mas como não foi confirmada, seu aplicativo já consideraria essas alterações perdidas, pois a confirmação nunca foi concluída.