Почему Вы не указываете varchar длину? т.е.:
SELECT CAST('the quick brown fox jumped over the lazy dog' AS VARCHAR(45))
До, почему 30, это - длина по умолчанию в SQL Server для того типа.
От символ и varchar (Transact-SQL) :
, Когда n не указан в определении данных или операторе объявления переменной, длина по умолчанию равняется 1. , Когда n не указан при использовании БРОСКА и ПРЕОБРАЗОВЫВАЕТ функции, длина по умолчанию равняется 30.
Я не знаю, почему они выбрали 30, но это было то же в SQL Server Sybase, из которого был разработан SQL Server Microsoft. Это, кажется, особенность тех RDBMSs, поскольку это не находится в стандартах SQL, и другие серверы отличаются по своему поведению.