Microsoft KB Archive/323040

= FIX: SQL Server Full-Text Population by Using a Single-Threaded Filter DLL or a PDF Filter DLL May Not Succeed =

Article ID: 323040

Article Last Modified on 1/20/2004

-

APPLIES TO


 * Microsoft SQL Server 2000 Standard Edition

-



This article was previously published under Q323040



BUG #: 357442 (SHILOH_BUGS)

IMPORTANT: This article contains information about modifying the registry. Before you modify the registry, make sure to back it up and make sure that you understand how to restore the registry if a problem occurs. For information about how to back up, restore, and edit the registry, click the following article number to view the article in the Microsoft Knowledge Base:

256986 Description of the Microsoft Windows Registry



SYMPTOMS
SQL Server permits full-text population of documents that are stored in the database through filter dynamic link libraries (DLLs) that can interpret the document file format, and that can expose the data by using the IFilter interface. Attempts to populate a SQL Server Full Text Search (FTS) catalog with a single-threaded IFilter DLL may intermittently fail, and various symptoms may occur, including but not limited to:  Errors such as the following may appear in the Application event log:

SQLFTHNDLR Information One or more documents stored in image columns with extension '.pdf' did not get full-text indexed because loading the filter failed with error '0x1'.

NOTE: These documents are not passed to MSSearch for indexing; therefore, this failure is not reflected at the end of the crawl summary statistics. The full-text population daemon, MSSdmn.exe, may encounter an unhandled exception, which may appear as a Dr. Watson report for this process. Full-text searches may return incomplete results even if the population is complete.

This article is only applicable when FTS population is using a single-threaded filter DLL. (For example, the Adobe PDF IFilter version 5.0 for .pdf documents.)



CAUSE
This problem occurs because the SQL Server FTS population process is multithreaded and because the IFilter DLL is not thread-safe, populating the catalog from multiple threads at the same time may cause unpredictable behavior in the filter.



RESOLUTION
To resolve this problem, obtain the latest service pack for Microsoft SQL Server 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

290211 INF: How To Obtain the Latest SQL Server 2000 Service Pack



WORKAROUND
WARNING: If you use Registry Editor incorrectly, you may cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that you can solve problems that result from using Registry Editor incorrectly. Use Registry Editor at your own risk.

To work around this problem, set the following registry value to 1 to restrict the gathering process to a single thread:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager

RobotThreadsNumber (REG_DWORD)

The default value is 0, which allows multithreaded access to any filter DLLs. With the registry value set to 1, catalog population times may increase significantly because the population is restricted to indexing a single document at a time. This restricted speed is the maximum that can be expected when you are using a single-threaded IFilter DLL because concurrent access to the DLL is not safe. However, setting this registry key also restricts the gathering process for any thread-safe filter DLLs to a single thread, which may slow population times for document types that do not encounter this problem.



STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.

This problem was first corrected in Microsoft SQL Server 2000 Service Pack 3.



MORE INFORMATION
The work around that is included in this article and the fix that is included in SQL Server 2000 Service Pack 3 (SP3) to serialize the gathering process are separate. SQL Server 2000 SP3 includes a single-threaded filter daemon that loads the PDF and other single-threaded filters. In previous versions of SQL Server 2000, the single-threaded PDF filter was loaded in a multi-threaded filter daemon, and the work around serialized the process until a single-threaded filter daemon became available. In SQL Server 2000 SP3, you do not have to modify the registry to correct this problem.

Additional query words: gatherer AV

Keywords: kbbug kbpending kbsqlserv2000sp3fix KB323040

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.