Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да разреша 900 ограничение на индекса на дължината на ключа в колоната, която има тип данни varchar(4096) в SQL Server 2005?

Не можете - както вече ясно се посочва в съобщението за грешка, всеки запис в индекса не може да бъде по-дълъг от 900 байта.

Не можете да индексирате поле varchar(4096) - точка. Няма начин да го заобиколите - това е твърдо ограничение на SQL Server - няма начин да го конфигурирате, промените или увеличите. Вижте Книги онлайн - максимален размер на индексните ключове за потвърждение.

Трябва или да ограничите своята колона „стойност“ до по-малко от 900 байта, или да намерите друг начин за съхраняване на тези данни – или просто да не ги включвате в индекса. Ако искате само вашето поле „стойност“ в индекса да има покриващ индекс (за да можете да задоволявате заявки от записа в индекса), можете да преместите полето да бъде включена колона в индекса - те не попадат под ограничението от 900 байта.

CREATE NONCLUSTERED INDEX idx_ncl_2 
  ON BFPRODATTRASSOCIATION(attributeid) 
  INCLUDE (productid, value)

Този индекс трябва да работи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2008 - Завъртане на една колона, групиране по друга, поддържане на препратка към трета

  2. SqlTransaction е завършен

  3. SqlRoleProvider:NullReferenceException при извикване на Roles.GetRolesForUser

  4. Показване на запетая вместо точка като десетичен разделител

  5. Системни бази данни на SQL Server – поддръжка на Tempdb