O problema é que a segunda parte do argumento da substring inclui o primeiro índice. Você precisa subtrair o primeiro índice do segundo índice para fazer isso funcionar.
SELECT SUBSTRING(@Text, CHARINDEX('the dog', @Text)
, CHARINDEX('immediately',@text) - CHARINDEX('the dog', @Text) + Len('immediately'))