Vấn đề là phần thứ hai của đối số chuỗi con của bạn bao gồm chỉ mục đầu tiên. Bạn cần trừ chỉ mục đầu tiên khỏi chỉ mục thứ hai để làm cho điều này hoạt động.
SELECT SUBSTRING(@Text, CHARINDEX('the dog', @Text)
, CHARINDEX('immediately',@text) - CHARINDEX('the dog', @Text) + Len('immediately'))