Problemet är att den andra delen av ditt substrängargument inkluderar det första indexet. Du måste subtrahera det första indexet från ditt andra index för att få detta att fungera.
SELECT SUBSTRING(@Text, CHARINDEX('the dog', @Text)
, CHARINDEX('immediately',@text) - CHARINDEX('the dog', @Text) + Len('immediately'))