Перейти до основного
Підтримка
Вхід
Вхід за допомогою облікового запису Microsoft
Увійдіть або створіть обліковий запис.
Вітаємо,
Виберіть інший обліковий запис.
У вас є кілька облікових записів
Виберіть обліковий запис, за допомогою якого потрібно ввійти.

Корпорація Майкрософт поширює Microsoft SQL Server 2008 із пакетом оновлень 1 (SP1) або SQL 2008 R2, як-от один файл для завантаження. Оскільки виправлення є сукупними, у кожному новому випуску містяться всі виправлення та всі виправлення системи безпеки, які були включені до попередньої версії SQL Server 2008 SP1 або SQL 2008 R2 Fix Release.

Ознаки

Розглянемо такий сценарій:

  • У Microsoft SQL Server 2008 або SQL Server 2008 R2, ви запускаєте запит на певний стовпець у таблиці, яка містить багато рядків. Запит МІСТИТЬ предикат в реченні WHERE.

  • Термін, який використовується для предиката, містить слово. Слово з'явиться в деяких стовпцях, які містяться в повнотекстовому індексі таблиці.

У цьому сценарії запит займає багато часу для компіляції. Наприклад, ця проблема може виникати під час запуску такого запиту:

SELECT count(*)FROM dbo.MyLargeTable whereCONTAINS (email_address, '"name@contoso.com"')

Примітки

  • Припустимо, що ". com" відображається в деяких стовпцях, які містяться в повнотекстовому індексі таблиці.

  • Ви можете відстежувати час компіляції запиту, щоб визначити, чи ви зустрічите цю проблему. Докладні вказівки про відстеження часу компіляції наведено в розділі "Додаткові відомості".

Причина

Ця проблема виникає через помилку в логіці оцінки потужності для повнотекстових індексів. У цьому випадку можна відсканувати кілька стовпців, які містять часто виконану програму Word, перш ніж область пошуку для очікуваних стовпців звужується.

Спосіб вирішення

Відомості про Сукупне оновлення

SQL Server 2008 із пакетом оновлень 2

Виправлення для цієї проблеми уперше випущено в сукупному оновленні 4 для SQL Server 2008 Service Pack 2. Щоб отримати докладні відомості про цей пакет накопичувальне оновлення, клацніть номер статті в базі знань Microsoft Knowledge Base:

2527180 Сукупний пакет оновлень пакета 4 для SQL Server 2008 Service Pack 2Примітка. Оскільки будує сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення безпеки, які були включені до попередньої версії SQL Server 2008 Fix Release. Корпорація Майкрософт рекомендує застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:

2402659 Інстальовано пакет оновлення SQL Server 2008, який було випущено після випуску служби SQL Server 2008 Service Pack 2 Поточні виправлення Microsoft SQL Server 2008 створюються для певних пакетів оновлень для сервера SQL Server. Щоб інсталювати пакет оновлень 2 для SQL Server 2008, потрібно додати пакет оновлень 2 для SQL Server 2008. За замовчуванням будь-яке термінове виправлення, яке надається в пакеті оновлень SQL Server, включено до наступного пакета оновлень служби SQL Server.Виправлення для цієї проблеми уперше випущено в сукупному оновленні 13. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета для SQL Server 2008 SP1, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:

2497673 Сукупний пакет оновлень пакета 13 для SQL Server 2008 Service Pack 1 Примітка. Оскільки пакет має сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення безпеки, які були включені до попередньої версії SQL Server 2008 SP1. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:

970365 Випущено SQL Server 2008, що випущено після випуску пакета оновлень 1 (SP1) для SQL Server 2008

SQL Server 2008 R2 Service Pack 1

Виправлення для цієї проблеми уперше випущено в сукупному оновленні 1 для SQL Server 2008 R2 Service Pack 1. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:

2544793 Сукупний пакет оновлень пакета 1 для SQL Server 2008 R2 Service Pack 1Примітка. Оскільки будує сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення безпеки, які були включені до попередньої версії SQL Server 2008 R2 Fix Release. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:

2567616 Випущено пакет оновлень 1 для SQL Server 2008 R2, випущеній після випуску SQL Server 2008 R2 Service SP1

SQL Server 2008 R2

Виправлення для цієї проблеми уперше випущено в сукупному оновленні 7. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета для SQL Server 2008 R2, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:

2507770 Сукупний пакет оновлень пакета 7 для SQL Server 2008 R2 Примітка. Оскільки будує сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення безпеки, які були включені до попередньої версії SQL Server 2008 R2 Fix Release. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:

981356 Випущено SQL Server 2008 R2, випущеній після випуску SQL Server 2008 R2

Стан

Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "застосовується до".

Інші способи вирішення

Щоб вирішити цю проблему, скористайтесь одним із запропонованих нижче способів.

  • Використовуйте *, щоб включити всі стовпці в пошук, а не в один стовпець. Це змінює кількість рядків, які фактично обчислюються, перш ніж інтегрований повний текст компілює її оцінку. Наприклад, виконайте такий запит:

    SELECT count(*) FROM dbo.MyLargeTabel where CONTAINS (*, '"test@contoso.com"')
  • Зробіть таке, що часто відбуваються в програмі Word Stop Word, за допомогою функції ALTER FULLTEXT STOPLIST. Щоб отримати докладніші відомості про оператор "ALTER FULLTEXT STOPLIST" для Transact-SQL, перейдіть на веб-сайт Microsoft Developer Network (MSDN): Загальні відомості про функцію "змінити звіт про STOPLIST" для Transact-SQL

Додаткові відомості

Щоб відстежувати час компіляції запиту, виконайте наведені нижче дії.

  1. Під час виконання запиту можна записати трасування SQL Profiler. Для цього потрібно стежити за TSQL: BatchCompleted і TSQL: StmtCompleted події або RPC: завершені та SP: StmtCompleted події.

  2. Зверніть увагу на час пакетної обробки та ПРОЦЕСОРНОГО часу.

  3. Відніміть час ПРОЦЕСОРНОГО часу з ПРОЦЕСОРНОГО часу пакетної обробки. Результат вказує на те, що ПРОЦЕСОРНИЙ час, який потрібно проаналізувати, і компілятора пакета.

Щоб отримати докладні відомості про використання МІСТИТЬ предикат для Transact-SQL, завітайте на веб-сайт Microsoft Development Network (MSDN):

Використання предиката "МІСТИТЬ" для Transact-SQL

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.

Чи ця інформація була корисною?

Наскільки ви задоволені якістю мови?
Що вплинуло на ваші враження?
Натиснувши кнопку "Надіслати", ви надасте свій відгук для покращення продуктів і служб Microsoft. Ваш ІТ-адміністратор зможе збирати ці дані. Декларація про конфіденційність.

Дякуємо за відгук!

×