Ознаки
Припустімо, що ви намагаєтеся завантажити файл тезауруса в будь-якій мовній версії Microsoft SQL Server 2008 R2, у якому використано зіставлення Двохбайтового набору символів (DBCS). Файл тезауруса містить синоніми, які мають суфікс "0x20". У цій ситуації файл тезауруса не завантажується, і з'являється таке повідомлення про помилку:
MSG 50000, рівень 16, стан 1, процедура sp_fulltext_rethrow_error, лінія 36 помилка 30049, рівень 16, стан 1, процедура sp_fulltext_thesaurus_update, лінія 61, повідомлення: FULLTEXT тезаурус внутрішня помилка (HRESULT = ' 0x8007054e ')
Причина
Ця проблема виникає тому, що функція LEN повертає неправильні синоніми, які мають суфікс "0x20". Суфікс "0x20" інтерпретується як символ пробілу ASCII. Таким чином, функція LEN повертає один мінус-значення довжини даних.
Спосіб вирішення
Відомості про Сукупне оновлення
Сукупне оновлення 4 для SQL Server 2008 R2 з пакетом оновлень 2 (SP2)
Виправлення для цієї проблеми уперше випущено в сукупному оновленні 4. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета для SQL Server 2008 R2 Service Pack 2, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:
2777358 Сукупний пакет оновлень пакета 4 для SQL Server 2008 R2 Service Pack 2Примітка. Оскільки пакет складається з сукупних, кожен новий випуск Fix містить всі поточні виправлення та всі виправлення системи безпеки, які були включені до попередньої версії SQL Server 2008 R2 Service Pack 2 Fix Release. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
2730301 Випущено пакет оновлень 2 для SQL Server 2008 R2, випущеній після випуску SQL Server 2008 R2 Service Pack NO2Примітка . Після інсталяції цього виправлення функція DATALENGTH використовуватиметься замість функції LEN .
Стан
Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "застосовується до".