sto usando SQL Server 2008.SQL Server 2008 - HashBytes calcolati colonna
Ho una colonna NVARCHAR (MAX) chiamato Titolo e voglio aggiungere un indice univoco per esso. Poiché la colonna è più grande di 900 byte, ho deciso di creare una colonna calcolata HashBytes (basata su raccomandazione su StackOverflow).
Come si crea la colonna HashBytes?
alter table Softs add TitleHash AS (hashbytes('SHA1',[Title])) PERSISTED;
questo ha funzionato e la colonna calcolata è stato creato.
MA quando si cerca di aggiungere un indice ottengo il seguente errore:
Adding the selected columns will result in an index key with a maximum length of 8000 bytes.
The maximum permissible index length is 900 bytes.
INSERT and UPDATE operations fail if the combined value of the key columns exceeds 900 bytes.
Do you want to continue?
Questa è la query utilizzata per creare l'indice:
CREATE NONCLUSTERED INDEX [UIX_TitleHash] ON [dbo].[Softs]
(
[TitleHash] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
Pubblica la dichiarazione di creazione dell'indice. –
@marc_s In realtà, è possibile includerlo nell'elenco delle colonne incluse. –
@denis: sì, è vero - funzionerà - ma non può renderlo una colonna nella definizione dell'indice di per sé (non i campi inclusi) - questo è quello che intendevo dire –