REPLICATE
後の割り当てに関係なく、入力タイプを返します。面倒ですが、無言の切り捨てを避けるために、以下を試してください:
SET @x = REPLICATE(CONVERT(VARCHAR(MAX), 'a'), 10000);
プレ>これは、SQL Server が
REPLICATE
を実行するためです。 何に割り当てているか、または何文字まで展開しようとしているかを考慮する前に、操作を行ってください。入力式のみを考慮して何を返す必要があるかを判断し、入力が最大タイプでない場合は、8,000 バイト以内に収まるように意図されていると想定します。これについては、Books Online で説明されています。 :