Comportamiento de índice único, columna varchar y espacios (en blanco)

Estoy usando Microsoft SQL Server 2008 R2 (con el último service pack / parches) y la clasificación de la base de datos es SQL_Latin1_General_CP1_CI_AS.

El siguiente código:

SET ANSI_PADDING ON;
GO

CREATE TABLE Test (
   Code VARCHAR(16) NULL
);
CREATE UNIQUE INDEX UniqueIndex
    ON Test(Code);

INSERT INTO Test VALUES ('sample');
INSERT INTO Test VALUES ('sample ');

SELECT '>' + Code + '<' FROM Test WHERE Code = 'sample        ';
GO

produce los siguientes resultados:

(1 fila (s) afectada)

Msg 2601, Nivel 14, Estado 1, Línea 8

No se puede insertar una fila de claves duplicadas en el objeto 'dbo.Test' con el índice único 'UniqueIndex'. El valor clave duplicado es (muestra).

La instrucción se ha terminado

‐‐‐‐‐‐‐‐‐‐‐‐ @

> muestra <

(1 fila (s) afectada)

Mis preguntas son:

Supongo que el índice no puede almacenar espacios finales. ¿Alguien puede señalarme la documentación oficial que especifica / define este comportamiento?ay una configuración para cambiar este comportamiento, es decir, hacer que reconozca 'muestra' y 'muestra' como dos valores diferentes (que son, por cierto) para que ambos puedan estar en el índice. ¿Por qué en la Tierra el SELECT devuelve una fila? ¡SQL Server debe estar haciendo algo realmente divertido / inteligente con los espacios en la cláusula WHERE porque si elimino la unicidad en el índice, ambos INSERTs se ejecutarán OK y SELECT devolverá dos filas!

Cualquier ayuda / puntero en la dirección correcta sería apreciada. Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta