BUG: Cannot Have More than Eight Full Text Joins and OperationsID: Q230103
|
SQL Server 7.0 allows the use of join operations from materialized tables. When the number of tables used in all Full Text join operations on the SQL Server exceeds eight, SPIDs can timeout and fail to complete the join operation.
The following are examples of errors that may happen.
If you perform an sp_who or select from sysprocesses, the states of the SPIDS will be RUNNABLE, the command is a SELECT, and the wait type is 0x0.[spid 13]SQLState: 37000, Native Error: 7619 [Microsoft][ODBC SQL Server Driver][SQL Server]The query timed out.
The MSSearch service allows eight concurrent Rowsets to be active at a single time. All other query requests against the same catalog are queued until the results on an active Rowset are processed.
Insert the individual Full Text query result sets into a temporary table and perform the join using the temporary table.
For more details, refer to the SQL Server Books Online section pertaining to "Select Into".
Microsoft has confirmed this to be a problem in SQL Server version 7.0.
The following query performs nine materialized join operations from the same Full Text catalog. Because only eight rowsets can be active from MSSearch, the query times out.
In many of these cases, the actual showplan output outlines a hash merge between two or more of the materialized tables, requiring the rowsets to be active.
select iID, tData
from tblTest as t,
containstable(tblTest, tData, 'formsof(inflectional, cause)') as A,
containstable(tblTest, t2Data, 'formsof(inflectional, cause)') as B,
containstable(tblTest, t2Data, 'formsof(inflectional, cause)') as C,
containstable(tblTest, t2Data, 'formsof(inflectional, cause)') as D,
containstable(tblTest, t2Data, 'formsof(inflectional, cause)') as E,
containstable(tblTest, t2Data, 'formsof(inflectional, cause)') as F,
containstable(tblTest, t2Data, 'formsof(inflectional, cause)') as G,
containstable(tblTest, t2Data, 'formsof(inflectional, cause)') as H
,containstable(tblTest, t2Data, 'formsof(inflectional, cause)') as I
where
A.[KEY] = t.iID
and B.[KEY] = t.iID
and C.[KEY] = t.iID
and D.[KEY] = t.iID
and E.[KEY] = t.iID
and F.[KEY] = t.iID
and G.[KEY] = t.iID
and H.[KEY] = t.iID
and I.[KEY] = t.iID
go
The query can be simplified to the following:
select iID, tData
from tblTest as t,
containstable(tblTest, tData, 'formsof(inflectional, cause)') as A,
containstable(tblTest, t2Data, 'formsof(inflectional, cause)') as B,
where
A.[KEY] = t.iID
and B.[KEY] = t.iID
go
If more than eight SPIDs are attempting to run a query, it is possible to experience the same behavior. If each of the SPIDs is allowed to obtain the first Rowset, assigning the second Rowset cannot happen and the query will eventually timeout.
Additional query words:
Keywords : kbbug7.00 kbSQLServ700bug
Version : winnt:7.0
Platform : winnt
Issue type : kbbug
Last Reviewed: May 11, 1999