Akankah Katalog Teks Lengkap dengan Track berubah: AUTO otomatis diperbarui jika Ubah Pelacakan untuk tabel itu tidak diaktifkan?

12

Saya memiliki tabel database ini yang seharusnya menjaga agar indeks teks lengkap tetap mutakhir. Namun saya tidak melihat itu terjadi sama sekali (tidak ada kesalahan dalam log karena log terakhir yang saya lihat adalah ketika saya memicunya secara manual).

Inilah yang saya lihat ...

properti katalog teks lengkap

tapi di atas meja itu sendiri ...

masukkan deskripsi gambar di sini

Mungkinkah ini sebabnya itu tidak terjadi secara otomatis?

MetaGuru
sumber
Untuk kejelasan, log apa yang Anda maksud?
Mike Zalansky
@mikezalansky log teks lengkapnya yang dapat ditemukan di(..\MSSQL\Log\SQLFT*)
Kin Shah

Jawaban:

14

Anda melihat tempat yang salah.

Anda harus memeriksa seperti di bawah ini:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Menggunakan T-SQL ..

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

Setelah selesai, Anda dapat memeriksa status datetime yang terakhir dihuni

-- 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

masukkan deskripsi gambar di sini

Masukkan beberapa data ..

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

Sekarang Anda akan melihat bahwa Katalog FT diperbarui.

masukkan deskripsi gambar di sini

Dalam log ( ..\MSSQL\Log\SQLFT*) juga, di bawah ini akan menjadi pesan ...

2015-12-14 12: 36: 51.29 spid50s Informational: Teks lengkap Populasi otomatis diselesaikan untuk tampilan tabel atau diindeks '[AdventureWorks2012]. [Sumber Daya Manusia]. [JobCandidate]' (tabel atau ID tampilan terindeks '1589580701', ID basis data ' 5 '). Jumlah dokumen yang diproses: 1. Jumlah dokumen gagal: 0. Jumlah dokumen yang akan dicoba: 0.

Dari BOL :

Secara default, atau jika Anda menentukan CHANGE_TRACKING AUTO, Mesin Teks Lengkap menggunakan populasi otomatis pada indeks teks lengkap. Setelah populasi penuh awal selesai, perubahan dilacak saat data dimodifikasi pada tabel dasar, dan perubahan yang dilacak disebarkan secara otomatis. Indeks teks lengkap diperbarui di latar belakang, jadi, perubahan yang diperbanyak mungkin tidak langsung tercermin dalam indeks .

Secara default, SQL Server mengisi indeks teks lengkap baru sepenuhnya segera setelah dibuat. Namun, populasi penuh dapat mengkonsumsi sejumlah besar sumber daya. Oleh karena itu, ketika membuat indeks teks lengkap selama periode puncak, seringkali merupakan praktik terbaik untuk menunda populasi penuh hingga waktu di luar jam sibuk, terutama jika tabel dasar indeks teks lengkap besar. Namun, katalog teks lengkap tempat indeks ini tidak dapat digunakan sampai semua indeks teks lengkapnya terisi.

Juga, lihat Meningkatkan Kinerja Indeks Teks Lengkap

Kin Shah
sumber
Terima kasih! Masalah yang saya lihat adalah mengapa sepertinya tidak memperbarui sama sekali sampai saya secara manual membangun kembali indeks. Tidak yakin apakah itu terkait tetapi database yang tampaknya memiliki masalah ini paling banyak adalah salah satu yang juga dicerminkan.
MetaGuru
Issue I am looking at is why it doesn't seem to update at all until I manually rebuild the index.sudahkah Anda mengaturnya sesuai apa yang saya tunjukkan. Jika ada banyak perubahan, maka itu akan memakan waktu, karenaThe full-text index is updated in the background, however, so propagated changes might not be reflected immediately in the index.
Kin Shah
ya saya memeriksa tempat-tempat yang Anda tunjukkan dan dikonfigurasi dengan benar seperti pada contoh Anda ... anehnya, meskipun terakhir kali log mengatakan indeks ini diperbarui beberapa waktu yang lalu, bahkan berminggu-minggu, dibandingkan dengan terakhir kali baris baru ditambahkan .. ini akan berjalan ketika baris baru TAMBAH sesuai dengan ini, kan?
MetaGuru
1
Ya .. Saya diuji dan kemudian diposting sebagai jawaban.
Kin Shah
1

Untuk beberapa alasan, pengindeks teks penuh berhenti autopopulating untuk salah satu database SQL 2012 saya setelah replika database Grup Ketersediaan sekunder saya mengambil alih dan menjadi replika utama.

Setelah menghapus Indeks Teks Lengkap dan membuatnya kembali di atas meja dengan auto populate on, itu mulai mengisi kembali secara otomatis. Saya menggunakan SQL Management Studio dan Full Text Index membuat wizard untuk membuat ulang indeks.

Saya khawatir tentang berapa lama waktu yang diperlukan untuk menjalankan pengindeksan penuh data. Saya terkejut bahwa hanya butuh sekitar 5 menit untuk mengindeks ulang 3 kolom teks dari sebuah tabel dengan 547619 catatan.

Pengaturan pelacakan perubahan level tabel yang dimaksud dalam pertanyaan tetap dinonaktifkan. Jadi pelacakan perubahan Indeks Teks Lengkap jelas berbeda dari pengaturan pelacakan perubahan Tabel. Anda TIDAK perlu mengaktifkan pelacakan perubahan tabel agar Pengindeksan Perubahan Teks Lengkap dan Pengindeksan Teks Lengkap dapat digunakan secara otomatis.

Menjalankan kueri berikut dari basis data akan mengungkapkan kapan terakhir pengindeksan teks lengkap Anda menjalankan perayapan.

  SELECT  * FROM sys.fulltext_indexes

Ketika populasi otomatis aktif, crawl_end_date akan berubah setelah Anda memasukkan data ke dalam tabel.

Juga, Anda akan mencatat bahwa ketika Anda menjalankan kueri yang menggunakan indeks teks lengkap, itu akan menampilkan data terbaru:

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

Referensi Tambahan:

Artikel yang menjelaskan berbagai metode Populasi Pencarian Teks Lengkap: https://msdn.microsoft.com/en-us/library/ms142575%28v=sql.100%29.aspx

Informasi tentang kueri tabel teks lengkap terindeks: https://technet.microsoft.com/en-us/library/ms142571(v=sql.110).aspx#queries

Artikel tentang Arsitektur Pencarian Teks Lengkap: https://technet.microsoft.com/en-us/library/ms142571(v=sql.110).aspx#architecture

WWC
sumber