2009-06-02 7 views
4

Dans SQL Server texte intégral Système d'indexation je veux savoir si une table est enSQL Server FTI: Comment vérifier l'état de la table?

  • Mode start_chage_tracking
  • Mode update_index
  • start_change_tracking et start_background_updateindex modes

Le problème est que J'ai mis mes tables à "mettre à jour l'index de mise à jour", et puis lui dire de "commencer le suivi des changements", mais quelques mois plus tard, il ne semble pas suivre les changements. Comment puis-je voir l'état des drapeaux "background updateindex" et "change tracking"?

exemple:

sp_fulltext_table @tabname='DiaryEntry', @action='start_background_updateindex' 

Server: Msg 15633, Level 16, State 1, Procedure sp_fulltext_table, Line 364 
Full-text auto propagation is currently enabled for table 'DiaryEntry'. 

sp_fulltext_table @tabname='Ticket', @action='start_background_updateindex' 
Server: Msg 15633, Level 16, State 1, Procedure sp_fulltext_table, Line 364 
Full-text auto propagation is currently enabled for table 'Ticket'. 

Il est évident qu'un tableau a un état d'indexation, je veux juste savoir montrer que je peux l'afficher à l'utilisateur (à savoir moi).

L'autre API disponible:

EXECUTE sp_help_fulltext_tables 

retourne uniquement les tables qui se trouvent dans le catalogue, il ne retourne pas son statut.

TABLE_OWNER TABLE_NAME FULLTEXT_KEY_INDEX_NAME FULLTEXT_KEY_COLID FULLTEXT_INDEX_ACTIVE FULLTEXT_CATALOG_NAME 
=========== ========== ======================= ================== ===================== ===================== 
dbo   DiaryEntry PK_DiaryEntry_GUID  1     1      FrontlineFTCatalog 
dbo   Ticket  PK__TICKET_TicketGUID 1     1      FrontlineFTCatalog 

Et je peux obtenir le PopulateStatus d'un catalogue complet:

SELECT FULLTEXTCATALOGPROPERTY('MyCatalog', 'PopulateStatus') AS PopulateStatus 

qui retourne un statut pour le catalogue:

0 = Idle 
1 = Full population in progress 
2 = Paused 
3 = Throttled 
4 = Recovering 
5 = Shutdown 
6 = Incremental population in progress 
7 = Building index 
8 = Disk is full. Paused. 
9 = Change tracking 

mais pas pour une table.


SQL Server 2000 SP4

SELECT @@version 
Microsoft SQL Server 2000 - 8.00.194 (Intel X86) 
    Aug 6 2000 00:57:48 
    Copyright (c) 1988-2000 Microsoft Corporation 
    Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4) 

Indépendamment de tout bug, je veux créer l'interface utilisateur pour être facilement en mesure de voir son statut.

+0

Avez-vous essayé le lien vers les astuces sql? Le script vous obtient Tous les noms de catalogue dans la base de données Nom de la table Si le catalogue est activé ou désactivé Suivi des modifications Option Populate Statut Row Count texte intégral Recherche Compte différence entre le nombre total de la ligne et recherche de texte intégral Nombre Pourcentage complété Recherche plein texte Emplacement/Chemin – u07ch

Répondre

3

Christ. J'ai eu une réponse bien formatée. Je faisais défiler pour frapper sauver quand IE s'est écrasé.

Version courte:

OBJECTPROPERTY

  • TableFullTextPopulateStatus
  • TableFullTextBackgroundUpdateIndexOn
  • TableFullTextCatalogId
  • TableFullTextChangeTrackingOn
  • TableFullTextKeyColumn
  • TableHasActiveFulltextIndex

TableFullTextBackgroundUpdateIndexOn 1 = TRUE 0 = FAUX

TableFullTextPopulateStatus 0 = Pas de population 1 = population pleine 2 = Population incrémentale

Exemple complet:

SELECT 
    --indicates whether full-text change-tracking is enabled on the table (0, 1) 
    OBJECTPROPERTY(OBJECT_ID('DiaryEntry'), 'TableFullTextChangeTrackingOn') AS TableFullTextChangeTrackingOn, 

    --indicate the population status of a full-text table (0=No population, 1=Full Population, 2=Incremental Population) 
    OBJECTPROPERTY(OBJECT_ID('DiaryEntry'), 'TableFullTextPopulateStatus') AS TableFullTextPopulateStatus, 

    --indicates whether a table has full-text background update indexing (0, 1) 
    OBJECTPROPERTY(OBJECT_ID('DiaryEntry'), 'TableFullTextBackgroundUpdateIndexOn') AS TableFullTextBackgroundUpdateIndexOn, 

    -- provides the full-text catalog ID in which the full-text index data for the table resides (0=table is not indexed) 
    OBJECTPROPERTY(OBJECT_ID('DiaryEntry'), 'TableFullTextCatalogId') AS TableFullTextCatalogId, 

    --provides the column ID of the full-text unique key column (0=table is not indexed) 
    OBJECTPROPERTY(OBJECT_ID('DiaryEntry'), 'TableFullTextKeyColumn') AS TableFullTextKeyColumn, 

    --indicates whether a table has an active full-text index (0, 1) 
    OBJECTPROPERTY(OBJECT_ID('DiaryEntry'), 'TableHasActiveFulltextIndex') AS TableHasActiveFulltextIndex 
+0

Peut-être que je ne comprends pas votre problème; mais cela ne vous indiquera pas qu'il n'indexe pas les données; seulement comment il faudrait indexer les données. – u07ch

0

Quelle version de SQL/Service Pack utilisez-vous? cette habitude d'être un bogue dans SQL 2000

http://support.microsoft.com/kb/290212

exécuter la sp_fulltext_table dans cette séquence pour fixer temporairement la question.(L'espace disque est probablement la cause)

  • stop_change_tracking
  • start_change_tracking
  • stop_background_updateindex
  • start_background_updateindex

OK pour surveiller l'état que vous devez regarder cette ressource très pratique sur SQL Server FTI sur MSSQL Astuces; Je pense que le script là-bas vous donnera ce que vous cherchez.

Questions connexes