5

Estoy intentando poner la búsqueda de texto completo trabajando en SQL Server 2008, sin embargo, la tabla que intento indexar es una tabla con una clave primaria compuesta, algo así como esto:SQL Server 2008 Búsqueda de texto completo en una tabla con una clave primaria compuesta

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 

y me sale el siguiente error:. " 'PK__MESSAGES__C87C0C9C1EC32C6A' no es un índice válido para hacer cumplir una clave de búsqueda de texto completo una clave de búsqueda de texto completo debe ser único, no anulable, el índice de columna única que no está fuera de línea, no está definido en una columna calculada no implícita o no imprecisa, no tiene un filtro y tiene un tamaño máximo de 900 bytes. Elija otro índice para la clave de texto completo ".

Esto significa que no puedo usar la búsqueda de texto completo en tablas con claves primarias compuestas? ¿O estoy haciendo algo mal?

Gracias de antemano

Respuesta

8

Creo que el mensaje de error es bastante claro, ¿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."

Si el índice no es único, no no anulable, y no de una sola columna, no puede ser utilizado para la indización de texto completo.

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

No, como dice el error, este tipo de índice no funcionará. Período. No hay forma de evitarlo

Como señaló Remus, ¡nunca dice que tiene que ser el índice de clave principal! Si tiene algún otro campo no anulable y único en la tabla, puede usar un índice único en ese campo para sus propósitos. Incluso podría simplemente agregar un campo INT IDENTITY(1,1) a su tabla y poner un UNIQUE INDEX en ese solo campo y debería estar listo para comenzar.

+0

Eso es lo que esperaba, podría estar equivocado, porque una clave primaria compuesta sigue siendo una restricción única (pero no de una sola columna, ese es el problema). Muchas gracias, acabo de crear el campo único, y funcionó =) –

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.

en cuenta que no tiene que ser la clave primaria (es decir. La restricción PRIMARY KEY en la tabla). Cualquier índice único en una sola columna no anulable funcionará. Si no tiene dicha columna, agregue una columna de identidad a la tabla y agregue un índice a ella, luego use este índice para el catálogo de texto completo.

Cuestiones relacionadas