Sintomi
Considerare lo scenario descritto di seguito:
-
Si dispone di una tabella con due o più colonne di tipo dati bit in Microsoft SQL Server 2008 R2.
-
Si crea un indice cluster contenente due o più colonne di tipo di dati bit nella tabella.
-
Si crea un indice non cluster in una colonna e si specifica l'opzione DATA_COMPRESSION .
In questo caso, viene visualizzato il messaggio di errore seguente:
Msg 1944, livello 16, stato 1, linea <numero di riga>indice "<nome indice>" non è stato creato. Questo indice ha una lunghezza di chiave di almeno <lunghezza> byte. La lunghezza massima della chiave ammissibile è <lunghezza> byte.
Causa
Il problema si verifica perché i requisiti di spazio delle colonne tipo di dati bit vengono calcolati in modo non corretto in questo scenario.
Risoluzione
Il problema è stato risolto per la prima volta nel seguente aggiornamento cumulativo di SQL Server.
Aggiornamento cumulativo 13 per SQL Server 2008 R2 SP2 /en-us/help/2967540
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nell'aggiornamento cumulativo precedente. Vedere gli ultimi aggiornamenti cumulativi per SQL Server:
Soluzione alternativa
Per risolvere il problema, cambiare il tipo di dati delle colonne da bit a tinyint.
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".