Ich bin mit SQL Server 2008.SQL Server 2008 - HashBytes berechnete Spalte
Ich habe eine NVARCHAR (MAX) Spalte namens Titels und ich will für sich einen eindeutigen Index hinzuzufügen. Da die Spalte größer als 900 Byte ist, habe ich entschieden, eine HashBytes-berechnete Spalte zu erstellen (basierend auf der Empfehlung zu StackOverflow).
Wie erstelle ich die HashBytes-Spalte?
alter table Softs add TitleHash AS (hashbytes('SHA1',[Title])) PERSISTED;
das funktionierte und die berechnete Spalte erstellt wurde.
aber wenn ein Index i die folgenden Fehler zu addieren versucht erhalten:
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?
Dies ist die Abfrage verwendet, um den Index zu erstellen:
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
Geben Sie die Indexerstellungsanweisung ein. –
@marc_s Er kann es tatsächlich in die Liste der eingeschlossenen Spalten aufnehmen. –
@denis: Ja, wahr - das wird funktionieren - aber er kann nicht eine Spalte in der Indexdefinition per se machen (nicht die eingeschlossenen Felder) - das wollte ich sagen –