2010-05-20 6 views
7

Tengo una aplicación web ejecutándose en .net 3.5 conectada a un cuadro SQL 2005.El índice de texto completo requiere dejar caer y volver a crear, ¿por qué?

Hacemos lanzamientos programados cada 2 semanas.

Aproximadamente 14 tablas de 250 están indexadas en texto completo.

Después de que no todos los lanzamientos, pero algunos demasiados, los índices se caen. Parece que tienen datos allí, pero cuando intentamos buscarlos desde la interfaz o la empresa SQL obtenemos tiempos de espera/bloqueos.

Tenemos un script que deshabilita los índices, los descarta, borra el catálogo y luego vuelve a crear los índices. Esto soluciona el problema 99 veces de cada 100. y el otro momento, ejecutamos el script nuevamente y todo funciona

Hemos intentado solo reconstruir el índice de texto completo pero eso no soluciona el problema.

Mi pregunta es ¿por qué tenemos que hacer esto? ¿Qué podemos hacer para ordenar el índice?

Aquí es un poco de la secuencia de comandos,

IF EXISTS (SELECT * FROM sys.fulltext_indexes fti WHERE fti.object_id = OBJECT_ID(N'[dbo].[Address]')) 
ALTER FULLTEXT INDEX ON [dbo].[Address] DISABLE 
GO 
IF EXISTS (SELECT * FROM sys.fulltext_indexes fti WHERE fti.object_id = OBJECT_ID(N'[dbo].[Address]')) 
DROP FULLTEXT INDEX ON [dbo].[Address] 

GO 



IF EXISTS (SELECT * FROM sysfulltextcatalogs ftc WHERE ftc.name = N'DbName.FullTextCatalog') 
DROP FULLTEXT CATALOG [DbName.FullTextCatalog] 
GO 




     -- may need this line if we get an error 
     BACKUP LOG SMS2 WITH TRUNCATE_ONLY 

     CREATE FULLTEXT CATALOG [DbName.FullTextCatalog] ON FILEGROUP [FullTextCatalogs] 
     IN PATH N'F:\Data' 
     AS DEFAULT 
     AUTHORIZATION [dbo] 



CREATE FULLTEXT INDEX ON [Address](CommonPlace LANGUAGE 'ENGLISH') 
    KEY INDEX PK_Address 
      ON [DbName.FullTextCatalog] 
    WITH 
      CHANGE_TRACKING AUTO 
go 
+0

¿Se están cayendo y volviendo a cargar las 14 tablas? –

+0

No, a veces tienen algunos datos modificados, pero no más que eso. Procps, activadores y funciones almacenados se eliminan y se vuelven a crear. con SQL multi script como parte del lanzamiento –

+0

Parece que puede haber algún tipo de problema – Scozzard

Respuesta

2

This MSDN article ante errores de la indización de texto en SQL Server 2005 enumera los 6 posibles causas. Estoy resumiendo aquí - vea el artículo completo para más detalles.

  • El indexador no puede encontrar ni cargar un componente de filtro o separador de palabras.
  • Un componente, como un separador de palabras o filtro, falla y devuelve un error al indexador.
  • El índice de texto completo excede el límite para el número de filas que se pueden contener en un catálogo de texto completo.
  • Un índice de índice agrupado o un índice de clave de texto completo en la tabla que se está indexando se altera, elimina o reconstruye.
  • Una falla de hardware o corrupción de disco da como resultado la corrupción del catálogo de texto completo.
  • Un grupo de archivos que contiene la tabla indexada en texto completo se desconecta o se hace de solo lectura.

La conclusión del artículo es:

Usted debe ver el registro de rastreo al final de cualquier operación significativa de texto completo llenado de índice, o cuando se encuentra que una población no se ha completado.

Cuestiones relacionadas