Как я могу знать, когда Население Полнотекстового индекса SQL закончено?

Мы пишем модульные тесты на наше приложение ASP.NET, которые работают против тестовой базы данных SQL Server. Таким образом, метод ClassInitialize создает новую базу данных с данными тестирования, и ClassCleanup удаляет базу данных. Мы делаем это путем запущения .bat скриптов из кода.

Классам под тестом дают строку подключения, которая соединяется с базой данных модульного теста, а не производственной базой данных.

Наша проблема, что база данных содержит полнотекстовый индекс, который должен быть полностью заполнен с данными тестирования для наших тестов для выполнения как ожидалось.

Насколько я могу сказать, полнотекстовый индекс всегда заполняется в фоновом режиме. Я хотел бы смочь к также:

  1. Создайте полнотекстовый индекс, полностью заполненный, с синхронным (проводить-SQL?) оператор, или
  2. Узнайте, когда fulltext население закончено, там параметр обратного вызова, или я могу неоднократно спрашивать?

Мое текущее решение состоит в том, чтобы вызвать задержку в конце, класс инициализирует метод - 5 секунд, кажется, работают - потому что я ничего не могу найти в документации.

56
задан GarethOwen 28 April 2010 в 08:40
поделиться

2 ответа

Вы можете запросить статус, используя FULLTEXTCATALOGPROPERTY (см. Здесь : http://technet.microsoft.com/en-us/library/ms190370.aspx ).

Например:

SELECT
    FULLTEXTCATALOGPROPERTY(cat.name,'ItemCount') AS [ItemCount],
    FULLTEXTCATALOGPROPERTY(cat.name,'MergeStatus') AS [MergeStatus],
    FULLTEXTCATALOGPROPERTY(cat.name,'PopulateCompletionAge') AS [PopulateCompletionAge],
    FULLTEXTCATALOGPROPERTY(cat.name,'PopulateStatus') AS [PopulateStatus],
    FULLTEXTCATALOGPROPERTY(cat.name,'ImportStatus') AS [ImportStatus]
FROM sys.fulltext_catalogs AS cat

Вы также можете использовать SQL Profiler, чтобы отслеживать, какие команды SQL Server Management Studio выдает, когда вы открываете диалоговое окно свойств для каталога. Диалоговое окно включает индикацию состояния популяции, и вся отображаемая информация запрашивается с использованием T-SQL.

45
ответ дан 26 November 2019 в 17:13
поделиться

Спасибо, Дэниел, ваш ответ направил меня на правильный путь.

На самом деле я использую следующий оператор T-SQL, чтобы спросить, является ли статус популяции полнотекстового индекса Idle:

SELECT OBJECTPROPERTY(object_id('v_doc_desc_de'), 'TableFulltextPopulateStatus')

'v_doc_desc_de' - это имя представления базы данных, которое мы индексируем.

Если статус популяции не холост, я жду пару секунд и спрашиваю снова, пока он не станет холост. Важно выждать небольшой промежуток времени между проверками, чтобы не замедлять процесс создания полного текста из-за постоянной проверки статуса популяции.

В документации MSDN говорится, что функция OBJECTPROPERTYEX (на уровне таблицы) рекомендуется вместо оператора FULLTEXTCATALOGPROPERTY со свойством 'PopulateStatus'. В нем говорится следующее:

Следующие свойства будут удалены в одном из будущих выпусков SQL Server: LogSize и PopulateStatus. Избегайте использования этих свойств в новых разработках и планируйте модификацию приложений, которые в настоящее время используют любое из них.

8
ответ дан 26 November 2019 в 17:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: