REPLICATE
returnerar inmatningstypen oberoende av senare tilldelning. Det är irriterande, men för att undvika tyst trunkering, försök:
SET @x = REPLICATE(CONVERT(VARCHAR(MAX), 'a'), 10000);
Detta beror på att SQL Server utför REPLICATE
operation innan den överväger vad du tilldelar den till eller hur många tecken du försöker utöka den till. Den bryr sig bara om inmatningsuttrycket för att bestämma vad den ska returnera, och om inmatningen inte är en maxtyp antar den att den är tänkt att rymmas inom 8 000 byte. Detta förklaras i Books Online
: