SelectEtoile : Base de connaissance SGBD

Probleme acces lignes via fulltext search - SQLServer

1

 

Documentation Full Text Search :

 

 

Problème rencontré (ci-dessous la log FTS) :

2010-08-16 00:16:02.53 spid28s     Informational: Full-text Full population completed for table or indexed view '[mabase].[dbo].[FileContent]' (table or indexed view ID '165575628', database ID '5'). Number of documents processed: 77395. Number of documents failed: 0. Number of documents need retry: 15.
2010-08-16 00:16:04.53 spid28s     Error '0x8004170c: The document format is not recognized by the filter.' occurred during full-text index population for table or indexed view '[mabase].[dbo].[FileContent]' (table or indexed view ID '165575628', database ID '5'), full-text key value 0x000103E8. Attempt will be made to reindex it.
2010-08-16 00:16:04.53 spid28s     The component 'offfilt.dll' reported error while indexing.
Component path 'C:\WINNT\system32\offfilt.dll'.

 

 

Description de la table

USE [mabase]

GO

/****** Object:  Table [dbo].[FileContent]    Script Date: 09/07/2010 14:16:21 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[FileContent](

      [fileRef] [int] NOT NULL,

      [version] [int] NOT NULL CONSTRAINT [DF_FileContent_version]  DEFAULT (1),

      [verModifDate] [datetime] NULL CONSTRAINT [DF_FileContent_verModDate]  DEFAULT (getdate()),

      [userRef] [int] NOT NULL CONSTRAINT [DF_FileContent_userRef]  DEFAULT ((-1)),

      [comment] [varchar](256) NULL,

      [content] [image] NULL CONSTRAINT [DF_FileContent_content]  DEFAULT (''),

      [size] [int] NOT NULL CONSTRAINT [DF_FileContent_size]  DEFAULT ((-1)),

      [id] [int] IDENTITY(1,1) NOT NULL,

      [fileType] [varchar](10) NULL,

 CONSTRAINT [PK_FileContent] PRIMARY KEY NONCLUSTERED

(

      [id] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [FILE_CONTENT] TEXTIMAGE_ON [FILE_CONTENT]

 

GO

SET ANSI_PADDING OFF

GO

ALTER TABLE [dbo].[FileContent]  WITH NOCHECK ADD  CONSTRAINT [FK_FileContent_File] FOREIGN KEY([fileRef])

REFERENCES [dbo].[File] ([id])

GO

ALTER TABLE [dbo].[FileContent] NOCHECK CONSTRAINT [FK_FileContent_File]

 

Lancement de la commande sp_help_fulltext_columns FileContent :

 NAME COLNAMECOLID
BLOBTP_COLNAME
BLOBTP_COLID
LANGUAGE
 FileContentcontent
 6 fileType 9 1036

 

Identification de la ligne problématique :

Le code HEXA 0x000103E8 correspond à la valeur 66536

Résultat du select sur la table FileContent (id = 66536) : 

fileRef
Version
verModifDate
userRef
 comment content size id fileType
 66226 1 2008-11-24 11:02:54
 2384  0x... 18380666536
 doc

 

Vérification que le fichier dans la colonne de type image nommé 'content' n'est pas corrompu pour l'id 66536 :

Création d'un VBScript pour extraire les données de la colonne 'content' (ex : content.vbs ci-dessous) :

Set Conn = CreateObject("ADODB.Connection")

Conn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=mabase;Data Source=Host\SQLServerInstance"

Set rs = Conn.Execute("select * from Filecontent where id = 66536")

 

Do While Not rs.eof

   set Strm = CreateObject("ADODB.Stream")

    Strm.Type = 1 'adTypeBinary

    Strm.Open

    Strm.Write rs("content")

    Strm.SaveToFile "content.doc" , 2 'adSaveCreateOverWrite

    Strm.Close

    Set Strm = Nothing

    rs.MoveNext

Loop

 

Conn.Close

Set Conn = Nothing

 

Celui-ci  permet d'extraire le contenu de la colonne content dans un fichier content.doc. L'opération peut être réalisé pour toutes les extensions possibles.

Si le fichier est lisible, pas de problème de corruption !!!!

 

 

Recréation de l'index FullText afin de valider que l'index n'est pas corrompu

 ALTER FULLTEXT CATALOG [FileContent Full Text] REBUILD WITH ACCENT_SENSITIVITY = ON;

 Opération qui peut s'avérer un peu longue et rend indisponible l'utilisation de l'index FTS.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ajouter un Commentaire


Code de sécurité
Rafraîchir