Il problema è che la seconda parte dell'argomento della tua sottostringa include il primo indice. Devi sottrarre il primo indice dal tuo secondo indice per farlo funzionare.
SELECT SUBSTRING(@Text, CHARINDEX('the dog', @Text)
, CHARINDEX('immediately',@text) - CHARINDEX('the dog', @Text) + Len('immediately'))