このトピックでは、フルテキスト検索の破壊的変更について説明します。 これらの変更によって、以前のバージョンの SQL Serverに基づくアプリケーション、スクリプト、または機能が使用できなくなる場合があります。 この問題は、アップグレードするときに発生することがあります。 詳細については、「 アップグレード アドバイザーを使用したアップグレードの準備」を参照してください。
SQL Server 2014 での Full-Text 検索の破壊的変更
後で提供される情報。
SQL Server 2012 での Full-Text 検索の破壊的変更
sys.fulltext_languagesの名前列の照合順序が変更されました
カタログ ビュー sys.fulltext_languages (Transact-SQL) の言語名列の照合順序が、リソース データベースの固定照合順序から、SQL Server インスタンスに対して選択されている既定の照合順序に変更されました。 この変更により、sys.syslanguages (Transact-SQL) ビューをsys.fulltext_languagesに結合するときに、名前列の値を比較できます。 たとえば、既定のフルテキスト言語が既定のデータベース言語と異なるすべてのデータベースに対してクエリを実行できます。
SQL Server 2008 での Full-Text 検索の重大な変更
次の破壊的変更は、SQL Server 2005 と SQL Server 2008 以降のバージョン間の Full-Text 検索に適用されます。
| 特徴 | シナリオ | SQL Server 2005 | SQL Server 2008 以降のバージョン |
|---|---|---|---|
| CONTAINSTABLE とユーザー定義型 (UDT) | フルテキスト キーは、など、SQL Server ユーザー定義型です。 | 返されるキーは、ユーザー定義型に割り当てられた型です。 この例では、 char(1) になります。 |
返されるキーは、ユーザー定義型です。 この例では、 これは MyType になります。 |
| top_n_by_rank パラメーター (CONTAINSTABLE および FREETEXTTABLETransact-SQL ステートメント) | パラメーターとして 0 を使用して、クエリtop_n_by_rankを実行します。 | 0 より大きい値を使用する必要があることを示すエラー メッセージで失敗します。 | 成功し、0 行が返されます。 |
| CONTAINSTABLE と ItemCount | MSSearch に変更をプッシュする前に、ベース テーブルから行を削除します。 | CONTAINSTABLE はゴースト レコードを返します。 ItemCount は変更されません。 | CONTAINSTABLE はゴースト レコードを返しません。 |
| ItemCount | テーブルに null ドキュメントまたは型列が含まれています。 | インデックス付きドキュメントに加えて、null または null 型のドキュメントは ItemCount 値にカウントされます。 | ItemCount 値には、インデックス付きドキュメントのみがカウントされます。 |
| カタログ ItemCount | NULL 拡張子を持つ BLOB 列。 | カタログの ItemCount にカウントされます | カタログの ItemCount にはカウントされません。 |
| UniqueKeyCount | カタログから一意のキー数を照会します。たとえば、2 つのテーブル (table1 と table2) はそれぞれ、word1、word2、word3 の 3 つの単語を含みます。 |
UniqueKeyCount = 9。 次の表は、この値の取得方法をまとめたものです。 table1 = 3 テーブル1のフルテキストインデックスのEOF = 1 table2 = 3 table2 のフルテキスト インデックスの EOF = 1 フルテキスト カタログ = 1 |
各テーブルについて、 UniqueKeyCount は個別のキーワードの数 + 1 (0xFF) です。 これにより、 > 1 ドキュメント内の同じ単語が新しい一意キーとして扱われません。 カタログの場合、 UniqueKeyCount はカタログの下にある各テーブルの UniqueKeyCount の合計です。 異なるテーブルの同一の単語は、一意のキーとして扱われます。 この場合、一意のキー数は 8 です。 |
| 事前計算ランク サーバーレベルオプション | FREETEXTTABLE クエリのパフォーマンスの最適化。 | このオプションが 1 に設定されている場合、 top_n_by_rank で指定された FREETEXTTABLE クエリでは、フルテキスト カタログに格納されている事前計算済みのランク データが使用されます。 | サポートされていません。 |
| キー列を更新するときのsp_fulltext_pendingchangesの処理 | 2行テーブルの1行にあるフルテキストキー列を更新し、次にsp_fulltext_pendingchangesを実行してください。 | 両方の行が表示されます。 | 1 つの行のみが表示されます。 |
| インライン関数 | フルテキスト演算子を使用したインライン関数 | エラー メッセージを返します。 | 関連する行を返します。 |
| sp_fulltext_database | sp_fulltext_databaseを使用してフルテキスト検索を有効または無効にします。 | フルテキスト クエリの結果は返されません。 データベースに対してフルテキストが無効になっている場合、フルテキスト操作は許可されません。 | データベースに対してフルテキストが無効になっている場合でも、フルテキスト クエリと、許可されるフルテキスト操作に結果を返します。 |
| ロケール固有のストップ ワード | ベルギーフランス語やカナダフランス語など、親言語の inlocale 固有のバリアントをクエリします。 | クエリの inlocale 固有のバリアントは、親言語のコンポーネント (ワード ブレーカー、ステマー、ストップ ワード) によって処理されます。 たとえば、フランス語 (フランス) コンポーネントは、フランス語 (ベルギー) の解析に使用されます。 | ロケール識別子 (LCID) ごとにストップ ワードを明示的に追加する必要があります。 たとえば、ベルギー、カナダ、フランスの LCID を指定する必要があります。 |
| 類義語辞典のステミング処理プロセス | 類義語辞典と変曲形(ステミング)を使用する。 | 類義語辞典の単語は、拡張後に自動的に語幹を付けられます。 | 拡張でステミングされたフォームが必要な場合は、ステミングされたフォームを明示的に追加する必要があります。 |
| フルテキスト カタログ パスとファイル グループ | フルテキスト カタログの操作。 | 各フルテキスト カタログには物理パスがあり、ファイル グループに属しています。 データベース ファイルとして扱われます。 | フルテキスト カタログは仮想オブジェクトであり、どのファイル グループにも属していません。 フルテキスト カタログは、フルテキスト インデックスのグループを参照する論理的な概念です。 注: フルテキスト カタログを指定する SQL Server 2005Transact-SQL DDL ステートメントは正しく機能します。 |
| sys.fulltext_catalogs | このカタログ ビューのパス、data_space_id、およびfile_idを使用します。 | これらの列は、特定の値を返します。 | フルテキスト カタログがファイル システムに存在しなくなったため、これらの列は NULL を返します。 |
| sys.sysfulltextcatalogs | この非推奨のシステム テーブルの path 列を使用する。 | フルテキスト カタログのファイル システム パスを返します。 | フルテキスト カタログがファイル システムに存在しなくなったため、NULL を返します。 |
|
sp_help_fulltext_catalogs sp_help_fulltext_catalogs_cursor |
これらの非推奨のストアド プロシージャの PATH 列を使用する。 | フルテキスト カタログのファイル システム パスを返します。 | フルテキスト カタログがファイル システムに存在しなくなったため、NULL を返します。 |
| sp_help_fulltext_catalog_components | このストアド プロシージャのsp_help_fulltext_catalog_componentsを使用します。 | 現在のデータベース内のすべてのフルテキスト カタログに使用されるすべてのコンポーネント (フィルター、ワード ブレーカー、プロトコル ハンドラー) の一覧を返します。 | 空の行を返します。 |
| DATABASEPROPERTYEX | IsFullTextEnabled プロパティの使用。 | IsFullTextEnabled 設定は、特定のデータベースでフルテキスト検索が有効かどうかを示します。 | この列の値は無効です。 ユーザー データベースでは、常にフルテキスト検索が有効になっています。 |