プログラミングに関する機能強化 (データベース エンジン)

データベース エンジンのプログラミングに関する強化には、新しいデータ ストレージ機能、新しいデータ型、新しいフルテキスト検索アーキテクチャ、Transact-SQL に対するさまざまな強化や追加機能が含まれています。

データ ストレージ

テーブルおよびインデックスのストレージの圧縮

SQL Server 2008 では、テーブル、インデックス、およびインデックス付きビューに対して、行形式とページ形式の両方でディスク上のストレージ圧縮がサポートされています。パーティション分割されたテーブルとインデックスの圧縮は、パーティションごとに個別に構成できます。詳細については、「圧縮されたテーブルおよびインデックスの作成」を参照してください。

FILESTREAM ストレージ

FILESTREAM ストレージを使用すると、SQL Server アプリケーションでドキュメントやイメージなどの非構造化データをファイル システムに格納できます。これにより、ファイル システムの豊富なストリーミング API と高いパフォーマンスをクライアント アプリケーションで使用できるほか、非構造化データとそれに対応する構造化データの間でトランザクションの一貫性も維持されます。詳細については、「FILESTREAM ストレージの設計と実装」を参照してください。

新しい照合順序

SQL Server 2008 では、Windows Server 2008 が提供する照合順序に完全に対応する新しい照合順序が導入されています。これら 80 個の新しい照合順序は、*_100 というバージョン参照で示されます。これらの照合順序は、最新で言語的に正確なカルチャの並べ替え規則をユーザーに提供します。詳細については、「照合順序と Unicode のサポート」および「照合順序の使用」を参照してください。

パーティション テーブルとパーティション インデックスでのパーティション切り替え

データをパーティション分割すると、データ コレクション全体の整合性を保ちながら、データ サブセットの管理とアクセスを迅速かつ効率的に行えるようになります。このリリースでは、パーティション切り替え機能を使用してテーブル間でパーティションを切り替えることで、データのサブセットを迅速かつ効率的に転送できます。

パーティション切り替えの概念についてと、パーティション切り替えを実装しているサンプル コードについては、「パーティションの切り替えを使用した効率的なデータの転送」および「インデックス付きビューが定義されている場合のパーティション切り替え」を参照してください。

スパース列と列セット

スパース列は、NULL 値用にストレージ形式が最適化されている通常の列です。列の値の少なくとも 20% ~ 40% が NULL となる場合は、スパース列の使用を検討してください。詳細については、「スパース列の使用」を参照してください。

スパース列を使用するテーブルでは、テーブル内のすべてのスパース列を返すための列セットを指定できます。列セットは、型指定されていない XML 表記であり、テーブルのすべてのスパース列を 1 つにまとめて構造化した出力です。詳細については、「列セットの使用」を参照してください。

空間データのストレージ、メソッド、およびインデックス作成

空間データは、幾何オブジェクトの物理的な位置と形状に関する情報を表します。それらのオブジェクトは、点の位置である場合もあれば、国、道、湖などのより複雑なオブジェクトである場合もあります。

詳細については、「空間データの使用 (データベース エンジン)」、「geometry データ型メソッド リファレンス」、および「geography データ型メソッド リファレンス」を参照してください。

空間インデックスは、空間オブジェクト (空間データ) に対する特定のセット指向操作の効率を向上させます。空間インデックスを使用すると、比較的コストの高い空間操作を適用するオブジェクトの数を減らすことができます。詳細については、「空間インデックスの使用 (データベース エンジン)」を参照してください。

幅の広いテーブル

幅の広いテーブルは、1 つ以上の列のセットを含むテーブルです。幅の広いテーブルには、最大 30,000 列、1,000 個のインデックス、および 30,000 件の統計情報を含めることができます。詳細については、「特殊なテーブル」を参照してください。

データ型

日付および時刻データ型

SQL Server 2008 では、4 つの新しい日付および時刻データ型が導入されました。アプリケーションでこれらのデータ型を使用すると、日付または時刻に個別の型を使用したり、年の範囲を拡大したり、小数秒の有効桁数を増やしたり、タイム ゾーンのオフセットをサポートしたりできます。詳細については、「日時データの使用」を参照してください。

hierarchyid データ型

SQL Server 2008 では、階層関係をカプセル化するために、システムによって提供される新しいデータ型を導入しています。階層構造を持つテーブルを作成したり、データの階層構造を別の場所で参照するには、データ型として hierarchyid を使用します。階層データのクエリや操作を Transact-SQL で実行するには、階層メソッドを使用します。

hierarchyid 型によって階層データの保存やクエリが簡単になる例を次に示します。

  • 組織構造

  • ファイル システム

  • プロジェクト内のタスクのセット

  • 言語の用語の分類

  • Web ページ間のリンクのグラフ

関連する SqlHierarchyId CLR データ型はクライアント アプリケーションで使用できます。詳細については、「hierarchyid データ型の使用 (データベース エンジン)」を参照してください。

空間データ型

SQL Server 2008 では、geometry と geography の 2 つの空間データ型を導入しています。geometry データ型は平面 (ユークリッド (平面地球)) データをサポートし、geography データ型は GPS の緯度経度座標などの楕円体 (球体地球) データを格納します。これらの新しいデータ型は、線、点、多角形などの空間データ オブジェクトの保存と操作をサポートします。詳細については、「空間データの使用 (データベース エンジン)」を参照してください。

ユーザー定義テーブル型

データベース エンジンでは、ストアド プロシージャや関数内でパラメータとして使用したり、バッチ内やストアド プロシージャまたは関数の本体で使用したりするためのテーブル構造を表す、新しいユーザー定義テーブル型を導入しています。ユーザー定義テーブル型には一意の制約および主キーを作成できます。

詳細については、「ユーザー定義テーブル型」を参照してください。

ユーザー定義型 (UDT)

UDT の最大サイズが 2,147,483,647 バイトに引き上げられました。

フルテキスト検索

SQL Server 2008 Enterprise フルテキスト検索では、新しいフルテキスト アーキテクチャが導入されています。フルテキスト検索は、データベースに完全に統合された機能となりました。その結果、フルテキスト検索は次の領域で機能が大幅に向上しています。

  • フルテキスト カタログは、ファイル システムに保存されるのではなく、データベースに統合されているので、データベースを移動すると、フルテキスト カタログも自動的に移動されます。

  • SQL Server 2005 のノイズ ワードは、ストップ ワードになりました。ストップ ワードの構成は、ストップ リスト オブジェクトの新しいセットによって管理されます。これらのオブジェクトはデータベースに関連付けられており、データベースと共に移動します。これにより、ストップ ワードの構成は、バックアップと復元、デタッチとアタッチ、データベース コピー ウィザードを使用したデータベースのコピーなどの管理操作中もそのままの状態で保持されます。詳細については、「ストップ ワードとストップ リスト」を参照してください。

  • クエリ オプティマイザなど、他の重要なクエリ コンポーネントとの統合の結果、特定のシナリオにおけるクエリとインデックス作成のパフォーマンスが大幅に向上しています。詳細については、「フルテキスト インデックスのパフォーマンスのチューニングと最適化」を参照してください。

  • 新しいツールを使用すると、フルテキスト インデックスの生の内容や、特定のクエリ用語または語句での特定のワード ブレーカの動作を理解するのに役立ちます。詳細については、「sys.dm_fts_index_keywords (Transact-SQL)」、「sys.dm_fts_index_keywords_by_document (Transact-SQL)」、および「sys.dm_fts_parser (Transact-SQL)」を参照してください。これらおよびその他の新しい動的管理ビューやストアド プロシージャは、フルテキスト検索に関する問題のトラブルシューティングを容易にします。これらのトラブルシューティング リソースの詳細については、「フルテキスト検索に関するトラブルシューティング」を参照してください。

  • 新しいワード ブレーカでは、単語の区切り精度が向上し、フルテキスト検索に使用できる言語セットが拡張されています。詳細については、「ワード ブレーカとステミング機能」を参照してください。

詳細については、「SQL Server 2008 におけるフルテキスト検索の動作の変更」、「SQL Server 2008 の非推奨フルテキスト検索機能」、「SQL Server 2008 におけるフルテキスト検索の重大な変更」、および「フルテキスト検索のアーキテクチャ」を参照してください。

Transact-SQL

互換性レベル

データベース互換性レベルを設定するための sp_dbcmptlevel は、ALTER DATABASE SET COMPATIBILITY_LEVEL に置き換えられています。詳細については、「ALTER DATABASE 互換性レベル (Transact-SQL)」を参照してください。

複合演算子

たとえば SET @x += 2 などのように、演算を実行し、変数に結果を設定する演算子を使用できます。詳細については、「複合演算子 (Transact-SQL)」を参照してください。

CONVERT 関数

CONVERT 関数は、バイナリ値と 16 進文字値間の変換ができるように強化されています。詳細については、「CAST および CONVERT (Transact-SQL)」を参照してください。

日付と時刻の機能

SQL Server 2008 は、ISO 週日付方式をサポートしています。詳細については、「DATEPART (Transact-SQL)」を参照してください。

GROUPING SETS

GROUPING SETS、ROLLUP、および CUBE 演算子が GROUP BY 句に追加されています。GROUPING_ID() という新しい関数は、既存の GROUPING() 関数よりも多くのグループ化レベル情報を返します。ISO に準拠しない WITH ROLLUP、WITH CUBE、および ALL の構文は推奨されません。詳細については、「ROLLUP、CUBE、および GROUPING SETS を指定した GROUP BY の使用」を参照してください。

MERGE ステートメント

この新しい Transact-SQL ステートメントは、ソース テーブルとの結合結果に基づき、INSERT、UPDATE、DELETE のいずれかの操作を対象テーブルに対して実行します。この構文では、データ ソースを対象のテーブルまたはビューと結合し、その結合結果に基づいて複数の操作を実行できるようになっています。詳細については、「MERGE (Transact-SQL)」を参照してください。

SQL 依存関係レポート

SQL Server 2008 では、一貫した信頼性の高い SQL 依存関係レポートを作成するために、新しいカタログ ビューとシステム関数を導入しています。sys.sql_expression_dependenciessys.dm_sql_referencing_entities、および sys.dm_sql_referenced_entities を使用すると、スキーマ バインドおよび非スキーマ バインドの両方のオブジェクトについて、サーバー間、データベース間、およびデータベースの SQL 依存関係をレポートできます。詳細については、「SQL 依存関係のレポート」を参照してください。

テーブル値パラメータ

データベース エンジンでは、ユーザー定義テーブル型を参照できる新しいパラメータ型を導入しています。テーブル値パラメータは、一時テーブルを作成せずに、SQL Server ステートメントまたはルーチン (ストアド プロシージャや関数など) に複数行のデータを送信できます。詳細については、「テーブル値パラメータ (データベース エンジン)」を参照してください。

Transact-SQL 行コンストラクタ

Transact-SQL は、単一の INSERT ステートメント内に複数の値を挿入できるように強化されています。詳細については、「INSERT (Transact-SQL)」を参照してください。