プログラミングに関する機能強化 (データベース エンジン)
データベース エンジンのプログラミングに関する機能強化には、FileTable、統計的セマンティック検索、プロパティスコープのフルテキスト検索とカスタマイズ可能な近接検索、アドホック クエリ ページング、空間型の円弧セグメントのサポート、シーケンス オブジェクトのサポート、既定で 15,000 個のパーティションのサポートなどがあり、さまざまな改善や追加機能が Transact-SQL に適用されています。
ネイティブ XML Web サービス (SOAP/HTTP エンドポイント) は削除されました。
SQL Server 2012 以降、CREATE ENDPOINT または ALTER ENDPOINT を使用して SOAP/HTTP エンドポイントを追加または変更することはできなくなります。
FileTable
FileTable 機能は、SQL Server FILESTREAM テクノロジをベースとして構築され、SQL Server に格納されているファイル データに対して Windows ファイル名前空間のサポートと Windows アプリケーションとの互換性を提供します。 これにより、アプリケーションは、ストレージとデータ管理コンポーネントを統合し、容易なポリシー管理に加えて、非構造化データおよびメタデータに対する (フルテキスト検索およびセマンティック検索を含む) 統合 SQL Server サービスを提供できます。
つまり、ファイルおよびドキュメントを SQL Server の特殊なテーブルに保存しておき、ファイル システムに格納されているかのように、Windows アプリケーションからこれらのファイルおよびドキュメントにアクセスできるということです。このとき、Windows アプリケーションに変更を加える必要はありません。
FileTable 機能の詳細については、「FileTables (SQL Server)」を参照してください。
統計的セマンティック検索
統計的セマンティック検索では、統計的に関連性があるキー フレーズを抽出し、これらのフレーズに基づいて、類似したドキュメントを特定することによって、SQL Server データベースに格納されている非構造化ドキュメントを深く解釈することができます。 これらの結果は、3 つの Transact-SQL 行セット関数を使用して構造化データとして取得することができます。
セマンティック検索は、SQL Server の既存のフルテキスト検索機能を基にして構築されていますが、構文的なキーワード検索を超える新しいシナリオにも対応できます。 フルテキスト検索ではドキュメントの単語に対してクエリを実行しますが、セマンティック検索ではドキュメントの意味に対してクエリを実行します。 新しいシナリオとしては、自動タグ抽出、関連性のあるコンテンツの検索、類似したコンテンツにまたがる階層的な移動などがあります。 たとえば、ドキュメントの類似性のインデックスに対してクエリを実行して、ジョブの説明に一致するレジュメを特定できます。 または、キー フレーズのインデックスに対してクエリを実行して、ドキュメントの編成またはコーパスに関する分類を作成することができます。
詳細については、「セマンティック検索 (SQL Server)」を参照してください。
セマンティック検索を使用するには、追加のデータベースをインストールし、アタッチして、登録する必要があります。 詳細については、「セマンティック検索のインストールと構成」を参照してください。
フルテキスト検索
プロパティ検索
SQL Server 2012 からは、フルテキスト インデックスを構成して、IFilter が出力する作成者やタイトルなどのプロパティに対してプロパティ スコープの検索をサポートできます。 この形式の検索を、プロパティ検索と呼びます。 特定の種類のドキュメントでプロパティ検索が可能かどうかは、対応するフィルター (IFilter) がフルテキスト インデックス作成時に検索プロパティを抽出するかどうかに依存します。 さまざまなドキュメント プロパティを抽出する IFilter の一例として、Microsoft Office 2007 のドキュメント ファイル形式 (.docx、.xlsx、.pptx など) に対応した IFilter があります。 詳細については、「検索プロパティ リストを使用したドキュメント プロパティの検索」を参照してください。
カスタマイズ可能な NEAR
SQL Server 2012 以降、CONTAINS 述語または CONTAINSTABLE 関数の新しいカスタム NEAR オプションを使用して、近接検索をカスタマイズできます。 カスタム NEAR では、必要に応じて、一致する語句で、最初の検索用語と最後の検索用語を分離する非検索用語の最大数を指定できます。 カスタム NEAR では、必要に応じて、単語および語句が指定した順序で出現している場合のみ一致するように指定することもできます。詳細については、「NEAR による他の単語の近くにある単語の検索」を参照してください。
新しいワード ブレーカーとステマー
フルテキスト検索およびセマンティック検索で使用されるすべてのワード ブレーカーおよびステマーは、韓国語を除き、今回のリリースで更新されています。 インデックスのコンテンツとクエリの結果の一貫性を保つために、アップグレード後に既存のフルテキスト インデックスを再作成することをお勧めします。
SQL Server の以前のリリースに含まれていた英語向けのサードパーティ製のワード ブレーカーは、Microsoft 製コンポーネントに置き換えられました。 以前の動作を維持する必要がある場合は、「米国英語と英国英語に使用されるワード ブレーカーの変更」を参照してください。
SQL Server の以前のリリースに含まれていたデンマーク語、ポーランド語、およびトルコ語向けのサードパーティ製のワード ブレーカーは、Microsoft 製コンポーネントに置き換えられました。 新しいコンポーネントは既定で有効になっています。
チェコ語とギリシャ語向けの新しいワード ブレーカーがあります。 SQL Server フルテキスト検索の以前のリリースでは、これらの 2 つの言語のサポートは含まれていません。
新しいワード ブレーカーの動作が変更されました。 詳細については、「フルテキスト検索の動作の変更」を参照してください。 以前の動作を維持する必要がある場合は、「検索で使用するワード ブレーカーを以前のバージョンに戻す」を参照してください。
このリリースでは、最新の Microsoft 製ワード ブレーカーとステマーがインストールされますが、最新の Microsoft 製フィルターはインストールされません。 最新のフィルターをダウンロードするには、「Microsoft Office 2010 フィルター パック」を参照してください。
新機能と強化された空間機能
SQL Server 2012 の最新の空間機能は、空間データへの対応において SQL Server が歩んできた歴史の中で大きな節目を迎えています。 リレーショナル データベース システムにおいて業界初となる全球空間オブジェクトと楕円体の円弧への対応が実現しました。 geography データ型は、サポートされるメソッドの種類と機能面で、geometry データ型と同水準まで拡充されています。 空間インデックスからメソッドまで全体的なパフォーマンスが大幅に向上しました。 それ以外にも空間データの機能は多方面で強化されており、SQL Server の空間機能は将来に向けて大きく前進したと言えます。
新しい空間機能の詳細な説明とサンプルについては、ホワイト ペーパー「SQL 2012 の新しい空間機能」をダウンロードして参照してください。
空間データ型に対する機能強化
追加された円弧および関連する新しいメソッド
**新しいサブタイプ。**新たに 3 つのサブタイプの円弧が追加されました。
CircularString
CompoundCurve
CurvePolygon
**新しいメソッド。**これらの円オブジェクトには既存のメソッドがすべて使用できます。 それに加えて、次のメソッドが利用できるようになりました。
BufferWithCurves(): 円弧を使用し、STBuffer() よりもはるかに少ないポイントで、バッファーに格納されたオブジェクトを構築します。
STNumCurves() および STCurveN(): 円弧の一連のエッジ (境界) に対する反復処理を行う場合に使用します。
STCurveToLine() および CurveToLineWithTolerance(): 既定の許容範囲とユーザー指定の許容範囲内の大まかな円弧を線分を使用して作成する場合に使用します。
geometry と geography に関して追加/更新されたメソッドと集計
新しいメソッド。
IsValidDetailed(): 空間オブジェクトが無効である理由を特定するうえで役立つメッセージを返します。
HasZ: 空間オブジェクトに Z 値が 1 つでも含まれている場合、1 (true) を返します。
HasM: 空間オブジェクトに M 値が 1 つでも含まれている場合、1 (true) を返します。
AsBinaryZM(): OGC WKB 形式に Z 値と M 値のサポートを追加します。
ShortestLineTo(): 2 つのオブジェクト間の最短距離を表す LineString を返します。
STLength(): 更新されています。LineString が有効でも無効でも動作するようになりました。
MinDbCompatibilityLevel(): 旧バージョンとの互換性を確保するための新しいメソッドです。 空間オブジェクトを SQL Server 2008 および SQL Server 2008 R2 が認識できるかどうかを示します。
**新しい集計。**これらの集計は、Transact-SQL でのみ利用できます。クライアント側のプログラミング ライブラリでは利用できません。
UnionAggregate
EnvelopeAggregate
CollectionAggregate
ConvexHullAggregate
精度の向上。
すべての構築と関連付けは、SQL Server 2008 および SQL Server 2008 R2 の 27 ビットに対し、48 ビットの精度で実行されるようになりました。 浮動小数点座標の丸めによって発生するエラーを減らすことができます。
geography 型の機能強化
**全球。**SQL Server では、論理半球よりも大きな空間オブジェクトがサポートされます。 SQL Server 2008 では、地物の概念が、論理半球よりも若干小さいサイズに制限されていました。 SQL Server 2012 では、地球全体の大きさに対応しました。 FULLGLOBE と呼ばれる新しいオブジェクト型を構築したり、操作の結果として受け取ったりすることができます。
新しいメソッド。
**無効なオブジェクトのためのメソッド。**無効なオブジェクトをテーブルに挿入できるようになりました。 STIsValid() および MakeValid() では、geometry 型と同じように、無効な geography オブジェクトが検出され、補正されます。
**リングの方向に関するメソッド。**リングの方向を気にせずに、地理学的多角形を割り当てることができるようになりました。 結果、予期しない動作が生じる可能性があります。 間違った方向で構築された場合は、ReorientObject() を使用して、多角形のリングの向きを再設定することができます。
**新たに geography 型に対応したジオメトリ メソッド。**従来 geometry 型でしか利用できなかった STWithin()、STContains()、STOverlaps()、STConvexHull() の各メソッドが、geography 型でも利用できるようになりました。 STConvexHull() を除き、これらの新しいメソッドは、空間インデックスによってサポートされます。
**新しい SRID。**サポートされる空間参照系に、新しく SRID (Spatial Reference ID) 104001 が追加されました。 この新しい SRID は地球の単位球面 (半径 1 の球) を表し、さほど厳密な楕円計算を必要としない場合に、geography 型と組み合わせることで最適化された数値計算を実行できます。
空間パフォーマンスの強化
空間インデックスの強化
**新しい自動グリッド。**新しい自動グリッドの空間インデックスは、geometry_auto_grid と geography_auto_grid の両方の空間型で利用できます。 パフォーマンスと効率の適切なトレードオフを選択するために、新しい自動グリッドには異なる手法が使用されています。 詳細については、「CREATE SPATIAL INDEX (Transact-SQL)」を参照してください。
新しい空間インデックス ヒント (SPATIAL_WINDOW_MAX_CELLS)。 空間インデックスを使用してクエリのパフォーマンスを微調整する場合にきわめて重要な役割を果たします。 通常、密度の高い空間データでは、要求される SPATIAL_WINDOW_MAX_CELLS も大きくなります。これに対し、密度の低い空間データでは、最適なパフォーマンスを得るために、SPATIAL_WINDOW_MAX_CELLS を低くするのが一般的です。 このヒントを指定しても、クエリ プランに空間インデックスが使用される保証はありません。 ただし、このヒントを使用した場合、既定の WINDOW_MAX_CELLS パラメーターは上書きされます。
**空間インデックスの圧縮。**詳細については、「CREATE SPATIAL INDEX (Transact-SQL)」を参照してください。
その他のパフォーマンス強化
特定の構文を使用した場合、最適化されたニアレスト ネイバー クエリ プランが利用できます。
その他いくつかのメソッドが、一般的なシナリオを想定して最適化されています。
CLR UDT 集計全般に関係する機能強化によって、空間集計のパフォーマンスが向上しています。
空間に関するその他の強化
空間ヘルパー ストアド プロシージャ
新しいヘルパー ストアド プロシージャが 2 つ追加されました。 これらのプロシージャを使用することで、特定の空間列を対象に、テーブル内の空間データの分布を評価することができます。
保存される計算列のサポート
UDT および空間型を計算列に保存できるようになりました。
クライアント側空間プログラミング ライブラリの変更点
新しいシンク インターフェイス (IGeometrySink110 および IGeographySink110) が追加されました。
ジオメトリ ビルダーとジオグラフィ ビルダー (SqlGeometryBuilder および SqlGeographyBuilder) が円弧の構築に対応しました。
Deserialize(SqlBytes) と Deserialize(SqlBytes) の両方の型に新しいメソッド (Deserialize) が追加されました。 このメソッドによって、逆シリアル化を簡単に行うことができます。
メタデータの検出
クエリを実際に実行しなくても応答の形式を設定できる SET FMTONLY オプションは、sp_describe_first_result_set、sp_describe_undeclared_parameters、sys.dm_exec_describe_first_result_set、および sys.dm_exec_describe_first_result_set_for_object で置き換えられています。
EXECUTE ステートメント
EXECUTE ステートメントは、WITH RESULT SETS 引数を使用して、ステートメントから返されるメタデータを指定できるようになりました。 詳細については、「EXECUTE (Transact-SQL)」を参照してください。
UTF-16 サポート
UTF-16 の補助文字 (SC) の照合順序
新しい補助文字 (SC) の照合順序が、nchar、nvarchar、および sql_variant の各データ型で使用できます。 たとえば、Latin1_General_100_CI_AS_SC や、日本語の照合順序を使用する場合は Japanese_Bushu_Kakusu_100_CI_AS_SC を使用できます。 これらの照合順序は、UTF-16 形式で Unicode 文字をエンコードします。 0 xFFFF より大きいコード ポイント値を持つ文字には、2 つの連続した 16 ビット ワードが必要です。 これらの文字は "補助文字" と呼ばれ、2 つの連続する 16 ビット ワードは "サロゲート ペア" と呼ばれます。 SC の照合順序では、nchar および nvarchar の各 Unicode 型を使用する関数による検索および並べ替えが向上します。 詳細については、「照合順序と Unicode のサポート」を参照してください。
XML 向けの UTF-16 補助文字 (SC) の照合順序のオプション
SQL Server 2012 では、照合順序が UTF 16 対応かどうかを識別する新しい照合順序オプション "SC" が追加されました。"SC" とは補助文字 (supplementary character) の略です。 詳細については、「照合順序と Unicode のサポート」を参照してください。 SQL Server 2012 では、SQL の型の XML スキーマなど、SQL Server が XML コンテンツ内のこの情報を公開または使用する場所における、この照合順序オプションのサポートも追加されています。 影響を受ける場所は次のとおりです。
SQL の型の XML スキーマ。 スキーマのバージョンは現在 1.2 です。 このスキーマには下位互換性があり、ターゲットの名前空間は変更されていません。 現在、このスキーマでは supplementaryCharacters グローバル属性が公開されます。
FOR XML を使用した XMLSCHEMA ディレクティブ。 新しいグローバル属性は、XMLSCHEMA ディレクティブによって生成されるインライン スキーマおよびインスタンス注釈で公開されます。localeId、sqlCompareOptions など、類似の属性も同時に公開されます。 このディレクトリは RAW モードおよび AUTO モードの FOR XML でサポートされますが、EXPLICIT モードや PATH モードではサポートされません。
sys.sys XML スキーマ コレクション。 この新しいグローバル属性は、組み込みの sys.sys XML スキーマ コレクションにあらかじめ入力されており、SQL の型の XML スキーマをインポートする、他のすべての XML スキーマ コレクションで暗黙的に使用できるようになっています。
カタログ ビュー。 新しいグローバル属性は、次のカタログ ビューに表示されます。
sys.xml_schema_components
sys.xml_schema_attributes
sys.xml_schema_component_placements
アップグレードされた XML スキーマ コレクション。 前のバージョンの SQL Server からアップグレードした後で、この新しいグローバル属性が SQL の型の XML スキーマをインポートするすべての XML スキーマ コレクションで公開されます。
XML 列セット。 新しい UTF-16 照合順序を使用する sql_variant 文字列を表す XML 列セットに、この新しいグローバル属性が追加されます。 また、UTF-16 に対応する照合順序を使用するために、挿入時および更新時にもこれを適用することで、スパース列の sql_variant 型の文字列値を設定する場合もあります。
アドホック クエリ ページングの実装
指定した行オフセットおよび行数を基に SELECT ステートメントによって返される行の範囲を指定することができます。 これは、特定のクエリでクライアント アプリケーションに送信される行の数を制御する場合に便利です。 詳細については、「ORDER BY 句 (Transact-SQL)」を参照してください。
シーケンス オブジェクト
シーケンス オブジェクトは、シーケンスが作成された仕様に従って数値のシーケンスを生成するユーザー定義のスキーマ バインド オブジェクトです。 ID 列のように動作しますが、シーケンス番号は 1 つのテーブルで使用するように制限されません。 詳細については、「シーケンス番号」を参照してください。
THROW ステートメント
THROW ステートメントを使用して例外を発生させ、TRY... CATCH 構造の CATCH ブロックに例外を転送できます。 詳細については、「THROW (Transact-SQL)」を参照してください。
14 個の新しい機能と 1 個の変更された機能
SQL Server 2012 では、新たに 14 個の組み込み関数が導入されました。 このような関数により、多くのデスクトップ アプリケーションの式言語で使用されている関数をエミュレートすることで、インフォメーション ワーカーの移行作業が簡易化されます。 もっとも、これらの関数は SQL Server に慣れているユーザーでも有用なものです。
新しい関数は、次のとおりです。
変換関数
日付と時刻の関数
論理関数
文字列関数
14 個の新しい関数が追加されたのに加え、1 つの既存の関数が変更されました。 既存の LOG (Transact-SQL) 関数に、2 番目のパラメーターとして base (省略可能) が追加されました。
SQL Server Express LocalDB
SQL Server Express LocalDB は、Express の新しい簡易バージョンです。Express のプログラミング機能をすべて備えながら、ユーザー モードで実行でき、前提条件が少なく構成不要の高速インストールが可能です。 SQL Server の LocalDB エディションは、プログラムの開発者を対象としています。 LocalDB インストールによって、SQL Server データベース エンジンの開始に最低限必要なファイルがコピーされます。 LocalDB のインストール後に、開発者は特殊な接続文字列を使用して接続を開始します。 接続時に、必要な SQL Server インフラストラクチャが自動的に作成および開始され、アプリケーションは複雑なまたは時間のかかる構成タスクを行わずにデータベースを使用できます。 開発者ツールによって、開発者は SQL Server データベース エンジンを使用して Transact-SQL コードを記述してテストすることができ、SQL Server の完全なサーバー インスタンスを管理する必要はありません。 SQL Server Express LocalDB のインスタンスは、SqlLocalDB.exe ユーティリティを使用して管理できます。 SQL Server Express ユーザー インスタンスの機能は推奨されないため、代わりに SQL Server Express LocalDB を使用する必要があります。 詳細については、「SQL Server 2012 Express LocalDB」を参照してください。
新規および強化されたクエリ オプティマイザー ヒント
FORCESEEK テーブル ヒントの構文が変更されました。 インデックスとインデックス列を指定することで、インデックスのアクセス方法をさらに詳細に管理できるようになりました。 従来の FORCESEEK 構文を使用しても、従来と同様に動作します。 この新機能を使用する予定がない場合、アプリケーションに変更を加える必要はありません。
FORCESCAN テーブル ヒントが追加されました。 これは FORCESEEK ヒントを補完するもので、クエリで参照されているテーブルやビューへのアクセス パスとしてクエリ オプティマイザーでインデックス スキャン操作のみを使用するように指定します。 FORCESCAN ヒントは、オプティマイザーが影響を受ける行数を過小評価し、スキャン操作ではなくシーク操作を選択するクエリに役立つ場合があります。 FORCESCAN を指定する際には、INDEX ヒントを使用してもしなくてもかまいません。 詳細については、「テーブル ヒント (Transact-SQL)」を参照してください。
拡張イベントの機能強化
次の新しい拡張イベントを使用できます。
page_allocated:
- フィールド: worker_address、number_pages、page_size、page_location、allocator_type、page_allocator_type、pool_id
page_freed:
- フィールド: worker_address、number_pages、page_size、page_location、allocator_type、page_allocator_type、pool_id
allocation_failure:
- フィールド: worker_address、failure_type、allocation_failure_type、resource_size、pool_id、factor
次の拡張イベントが変更されました。
resource_monitor_ring_buffer_record:
削除したフィールド: single_pages_kb、multiple_pages_kb
追加したフィールド: target_kb、pages_kb
memory_node_oom_ring_buffer_recorded:
削除したフィールド: single_pages_kb、multiple_pages_kb
追加したフィールド: target_kb、pages_kb
OVER 句サポートの機能強化
OVER 句が機能強化され、ウィンドウ関数をサポートするようになりました。 ウィンドウ関数は、現在の行と関係を持つ一連の行に対して計算を実行します。 たとえば、一連の行に対して ROWS 句や RANGE 句を使用し、移動平均や累積合計を計算することができます。 詳細については、「OVER 句 (Transact-SQL)」を参照してください。
さらに、OVER 句の指定をサポートする集計関数でパーティション内の行の順序付けがサポートされるようになりました。
分析関数
次の分析関数が追加されました。
サロゲート対応の XQuery 関数
W3C 勧告では、XQuery 関数および演算子は、上位 Unicode 文字を表すサロゲート ペアを UTF-16 エンコードの単一グリフとしてカウントするよう要求されています。 しかし、SQL Server 2012 以前のバージョンの SQL Server では、文字列関数はサロゲート ペアを単一の文字として認識しません。 一部の文字列操作 (文字列長の計算やサブストリングの抽出など) では、正しくない結果が返されていました。 SQL Server 2012 では、UTF-16 と、サロゲート ペアの正しい処理が完全にサポートされるようになりました。 詳細については、「SQL Server 2012 におけるデータベース エンジン機能の重大な変更」の「サロゲート対応の XQuery 関数」を参照してください。