5

Sto cercando di eseguire la ricerca full text su SQL Server 2008, tuttavia la tabella che sto cercando di indicizzare è una tabella con una chiave primaria composta, qualcosa di simile questo:SQL Server 2008 Ricerca di testo completo su una tabella con una chiave primaria composta

EXEC sp_fulltext_catalog 'My_Catalog', 'create' 
EXEC sp_fulltext_table 'Message', 'create', 'My_Catalog', 'PK__MESSAGES__C87C0C9C0EC32C7A' // PK__MESSAGES__C87C0C9C1EC32C6A is a composite key 

e ottengo il seguente errore:. " 'PK__MESSAGES__C87C0C9C1EC32C6A' non è un indice valido per imporre una chiave di ricerca full-text una chiave di ricerca full-text deve essere un unico, non annullabile, indice a colonna singola che non è offline, non è definito su una colonna calcolata non deterministica o non controllata, non ha un filtro e ha una dimensione massima di 900 byte. Scegli un altro indice per la chiave full-text. "

Ciò significa che non è possibile utilizzare la ricerca di testo completo nelle tabelle con chiavi primarie composite? O sto facendo qualcosa di sbagliato?

Grazie in anticipo

risposta

8

Penso che il messaggio di errore sia abbastanza chiaro, no?

" PK_MESSAGES_C87C0C9C1EC32C6A is not a valid index to enforce a full-text search key. A full-text search key must be a unique, non-nullable, single-column index which is not offline, is not defined on a non-deterministic or imprecise nonpersisted computed column, does not have a filter, and has maximum size of 900 bytes. Choose another index for the full-text key."

Se l'indice non è unico, non non annullabile, e non una sola colonna, non può essere utilizzato per l'indicizzazione full-text.

This means that i can't use the full text search in tables with composite primary keys? Or am i doing something wrong?

No, come dice l'errore, questo tipo di indice non funzionerà. Periodo. Assolutamente no.

Come ha sottolineato Remus, non dice mai che deve essere l'indice chiave primaria! Se nella tabella sono presenti altri campi non nullable e univoci, è possibile utilizzare un indice univoco su tale campo per i propri scopi. Potresti anche semplicemente aggiungere un campo INT IDENTITY(1,1) al tuo tavolo e mettere uno UNIQUE INDEX su quel singolo campo e dovresti andare.

+0

Questo è quello che mi aspettavo, potrei semplicemente sbagliarmi, perché una chiave primaria composta è ancora un vincolo univoco (ma non una colonna singola, questo è il problema). Grazie mille, ho appena creato il campo unico e ho lavorato =) –

4

A full-text search key must be a unique, non-nullable, single-column index which is not offline, is not defined on a non-deterministic or imprecise nonpersisted computed column, does not have a filter, and has maximum size of 900 bytes.

noti che non deve essere la chiave primaria (cioè. Il vincolo di chiave primaria nella tabella). Funzionerà qualsiasi indice univoco su una singola colonna non annullabile. Se non si dispone di una colonna di questo tipo, aggiungere una colonna Identity alla tabella e aggiungervi un indice, quindi utilizzare questo indice per il catalogo di testo completo.

Problemi correlati