İzi olan bir Tam Metin Kataloğu değişir mi: Söz konusu tablo için Değişikliği İzleme etkin değilse AUTO otomatik olarak güncellenir mi?


12

Tam metin dizini güncel tutmak için varsayalım bu veritabanı tablo var. Ancak bunu hiç görmüyorum (günlükte hata yok çünkü gördüğüm son günlük, manuel olarak tetiklediğim zamandı).

İşte gördüğüm şey ...

tam metin katalog özellikleri

ama masanın üzerinde ...

resim açıklamasını buraya girin

Bu otomatik olarak gerçekleşmemesinin nedeni bu olabilir mi?


Anlaşılır olması için hangi günlüğe başvuruyorsunuz?
Mike Zalansky

@mikezalansky bulabileceğiniz tam metin günlüğü(..\MSSQL\Log\SQLFT*)
Kin Shah

Yanıtlar:


14

Yanlış yere bakıyorsunuz.

Aşağıdaki gibi kontrol etmelisiniz:

resim açıklamasını buraya girin

resim açıklamasını buraya girin

T-SQL Kullanımı ..

Use database_name
go
ALTER FULLTEXT INDEX ON schema.table_name SET CHANGE_TRACKING AUTO;

İşiniz bittiğinde, son doldurulmuş tarih saatinin durumunu kontrol edebilirsiniz

-- script source : http://stackoverflow.com/a/10505496/1387418
-- Modified by Kin on Dec 14' 2015 to reflect the FTCatalogName
DECLARE @CatalogName VARCHAR(MAX)
SET     @CatalogName = 'AW2008FullTextCatalog' -- change here !

SELECT name as FTCatalogName, 
    DATEADD(ss, FULLTEXTCATALOGPROPERTY(@CatalogName,'PopulateCompletionAge'), '1/1/1990') AS LastPopulated
    ,(SELECT CASE FULLTEXTCATALOGPROPERTY(@CatalogName,'PopulateStatus')
        WHEN 0 THEN 'Idle'
        WHEN 1 THEN 'Full Population In Progress'
        WHEN 2 THEN 'Paused'
        WHEN 3 THEN 'Throttled'
        WHEN 4 THEN 'Recovering'
        WHEN 5 THEN 'Shutdown'
        WHEN 6 THEN 'Incremental Population In Progress'
        WHEN 7 THEN 'Building Index'
        WHEN 8 THEN 'Disk Full.  Paused'
        WHEN 9 THEN 'Change Tracking' END) AS PopulateStatus
FROM sys.fulltext_catalogs

resim açıklamasını buraya girin

Biraz veri ekleyin ..

insert into HumanResources.JobCandidate
(BusinessEntityID, Resume, ModifiedDate)
values 
    (4, NULL, DEFAULT)

Şimdi FT Kataloğunun güncellendiğini göreceksiniz.

resim açıklamasını buraya girin

Günlüklerde ( ..\MSSQL\Log\SQLFT*) de aşağıdaki mesaj olacaktır ...

2015-12-14 12: 36: 51.29 spid50s Bilgilendirici: Tam metin Tablo veya dizinlenmiş görünüm için otomatik nüfus tamamlandı '[AdventureWorks2012]. [HumanResources]. [JobCandidate]' (tablo veya dizinlenmiş görünüm kimliği '1589580701', veritabanı kimliği ' 5' ). İşlenen doküman sayısı: 1. Başarısız olan doküman sayısı: 0. Yeniden denenecek doküman sayısı: 0.

Gönderen BOL :

Varsayılan olarak veya CHANGE_TRACKING AUTO seçeneğini belirtirseniz, Tam Metin Motoru tam metin dizininde otomatik popülasyon kullanır. İlk tam nüfus tamamlandıktan sonra, veriler temel tabloda değiştirildikçe değişiklikler izlenir ve izlenen değişiklikler otomatik olarak yayılır. Tam metin dizini arka planda güncellenir, bu nedenle yayılan değişiklikler dizine hemen yansıtılmayabilir .

Varsayılan olarak, SQL Server yeni bir tam metin dizini oluşturulur oluşturulmaz tamamen doldurur. Bununla birlikte, tam bir nüfus önemli miktarda kaynak tüketebilir. Bu nedenle, yoğun dönemlerde tam metin dizini oluştururken, özellikle tam metin dizininin temel tablosu büyükse, tam popülasyonu yoğun olmayan bir zamana kadar ertelemek genellikle en iyi uygulamadır. Ancak, dizinin ait olduğu tam metin kataloğu, tüm tam metin dizinleri dolduruluncaya kadar kullanılamaz.

Ayrıca bkz . Tam Metin Dizinlerinin Performansını Artırma


Teşekkürler! Baktığım sorun, dizini elle yeniden oluşturana kadar neden hiç güncellenmiyor gibi görünüyor. İlişkili olup olmadığından emin değilim ama en çok bu sorunu yaşıyor gibi görünen veritabanı da yansıtılan bir veritabanı.
MetaGuru

Issue I am looking at is why it doesn't seem to update at all until I manually rebuild the index.gösterdiğim şeye göre ayarladın mı. Çok fazla değişiklik varsa, o zamandan bu yana biraz zaman alacaktırThe full-text index is updated in the background, however, so propagated changes might not be reflected immediately in the index.
Kin Shah

Evet, gösterdiğiniz yerleri kontrol ettim ve örneklerinizdeki gibi doğru bir şekilde yapılandırıldım ... garip bir şekilde günlüklerin bu dizinin güncellendiğini en son söylediği zaman bir süre önce, haftalar bile, yeni satırların son eklendiği zamanla karşılaştırıldı. bu hakka göre yeni satırlar eklendiğinde çalışır mı?
MetaGuru

1
Evet .. Test ettik ve sonra cevap olarak gönderdim.
Kin Shah

1

Nedense, ikincil Kullanılabilirlik Grubu veritabanı çoğaltmam devralındıktan ve birincil çoğaltma olduktan sonra, tam metin dizinleyici SQL 2012 veritabanlarımdan biri için otomatik yürütmeyi durdurdu.

Tam Metin Dizini'ni sildikten ve otomatik doldurma açıkken tablo üzerinde yeniden oluşturduktan sonra yeniden otomatik olarak çalışmaya başladı. Dizini yeniden oluşturmak için SQL Management Studio ve Tam Metin Dizini oluşturma sihirbazını kullandım.

Verilerin tam bir dizine eklenmesinin ne kadar süreceği konusunda endişeliydim. 547619 kayıtları olan bir tablodan 3 metin sütununu yeniden dizine eklemenin sadece 5 dakika sürdüğünü çok şaşırdım.

Soruda atıfta bulunulan Tablo düzeyi değişiklik izleme ayarları devre dışı bırakıldı. Dolayısıyla, Tam Metin Dizini değişiklik izleme, Tablo değişiklik izleme ayarından kesinlikle farklıdır. Tam Metin Dizin Oluşturma Değişiklik Takibi ve Tam Metin Dizin Oluşturma otomatik çalışma için tablo değişiklik izlemenin etkinleştirilmiş olması GEREKMEZ.

Veritabanından aşağıdaki sorguyu çalıştırmak, tam metin dizinleyicinizin en son ne zaman tarama gerçekleştirdiğini gösterir.

  SELECT  * FROM sys.fulltext_indexes

Otomatik yürütme açıkken, tabloya veri ekledikten sonra crawl_end_date değişmelidir.

Ayrıca, tam metin dizinini kullanan bir sorgu çalıştırdığınızda, en son verileri göstereceğini unutmayın:

  select TOP 10 * from YOURDATATABLE where contains((YOUR_indexed_column),'YOURSEARCHTERM') order by YOURPRIMARYKEYCOLUMN desc

Ek Referanslar:

Farklı Tam Metin Arama Nüfusu yöntemlerini açıklayan makale: https://msdn.microsoft.com/en-us/library/ms142575%28v=sql.100%29.aspx

Dizine tam metin içeren bir tabloyu sorgulamaya ilişkin bilgiler: https://technet.microsoft.com/en-us/library/ms142571(v=sql.110).aspx#queries

Tam Metin Arama Mimarisi ile ilgili Makale: https://technet.microsoft.com/en-us/library/ms142571(v=sql.110).aspx#architecture

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.