Escopos de nível de isolamento de transação

Quais são as regras de escopo para níveis de isolamento de transação no SQL Server 2005? Eu sei o que significam os diferentes níveis, mas não como aplicá-los adequadamente fora de um script de execução manual. Não consigo encontrar um guia prático para uso em código de qualidade de produção.

Obviamente, o escopo começa quando você usa um comando como este:

<code>SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
</code>

Mas onde isso termina? Se eu definir o nível iso em um procedimento armazenado e, em seguida, esse proc chama outro, o proc aninhao herdá-lo? Melhor ainda, se eu escalar o nível de iso dentro do proc aninhado, ele vai levar de volta para o processo de chamada? Os comandos de transação, como BEGIN TRAN, ROLLBACK e COMMIT, fazem alguma diferença?

Quando um procedimento armazenado é chamado por um aplicativo ou uma tarefa de agente, as alterações no nível de isolamento persistem de alguma forma? Eu sempre tenho que reverter para o padrão READ COMMITTED no final de cada proc?

Eu testaria em situações diferentes, mas não sei como ler o nível de isolamento atual.

questionAnswers(6)

yourAnswerToTheQuestion