Het probleem is dat het tweede deel van je substring-argument de eerste index bevat. Je moet de eerste index van je tweede index aftrekken om dit te laten werken.
SELECT SUBSTRING(@Text, CHARINDEX('the dog', @Text)
, CHARINDEX('immediately',@text) - CHARINDEX('the dog', @Text) + Len('immediately'))