Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como resolver o índice de limite de comprimento de 900 chaves na coluna que possui o tipo de dados varchar (4096) no SQL Server 2005?


Você não pode - como a mensagem de erro já afirma claramente, qualquer entrada de índice não pode ter mais de 900 bytes.

Você não pode indexar um campo varchar(4096) - período. Não há como contornar isso - é um limite rígido do SQL Server - não há como configurá-lo, alterá-lo, torná-lo maior. Consulte Manuais Online - Tamanho Máximo de Chaves de Índice para confirmação.

Você precisa limitar sua coluna "valor" a menos de 900 bytes ou encontrar outra maneira de armazenar esses dados - ou simplesmente não incluí-los no índice. Se você deseja apenas que seu campo "valor" no índice tenha um índice de cobertura (para poder satisfazer as consultas da entrada do índice), você pode mover o campo para uma coluna incluída no índice - eles não ficam abaixo do limite de 900 bytes.
CREATE NONCLUSTERED INDEX idx_ncl_2 
  ON BFPRODATTRASSOCIATION(attributeid) 
  INCLUDE (productid, value)

Esse índice deve funcionar.