REPLICATE
vrátí typ vstupu bez ohledu na pozdější přiřazení. Je to nepříjemné, ale abyste se vyhnuli tichému zkrácení, zkuste:
SET @x = REPLICATE(CONVERT(VARCHAR(MAX), 'a'), 10000);
Důvodem je, že SQL Server provádí REPLICATE
operace, než zváží, k čemu ji přiřadíte nebo na kolik znaků se ji pokoušíte rozšířit. Zajímá se pouze o vstupní výraz, aby určil, co by měl vrátit, a pokud vstup není typu max, předpokládá, že se má vejít do 8 000 bajtů. To je vysvětleno v Knihy online
: