El problema es que la segunda parte de su argumento de subcadena incluye el primer índice. Debe restar el primer índice de su segundo índice para que esto funcione.
SELECT SUBSTRING(@Text, CHARINDEX('the dog', @Text)
, CHARINDEX('immediately',@text) - CHARINDEX('the dog', @Text) + Len('immediately'))