Share via


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

Microsoft SQL Server 2005 には、データベース エンジンのプログラミングの機能と生産性を高めるための機能強化や新機能が盛り込まれています。データベース オブジェクトは、Microsoft Visual C# などの Microsoft .NET Framework ベース言語で記述できます。開発とデバッグは Microsoft Visual Studio 環境に統合されるため、.NET Framework ベースのコンポーネントやサービスを開発する場合と同じツールを使用してデータベース オブジェクトを開発できます。Transact-SQL 言語も拡張され、強化されたエラー処理や再帰クエリのサポートなどの機能が追加されています。

また、アプリケーションからデータベース エンジン インスタンスにアクセスするためのデータ アクセス インターフェイスも強化され、プログラミングの生産性が向上します。詳細については、「データ アクセス インターフェイスの機能強化」を参照してください。

Transact-SQL 言語で大幅に強化された機能の一覧を以下に示します。Transact-SQL の新しい機能の詳細については、「Transact-SQL の新機能と拡張機能 (Transact-SQL)」を参照してください。

プログラミングに関する機能強化

Microsoft .NET Framework : 共通言語ランタイムの統合

Microsoft .NET Framework の共通言語ランタイム (CLR) が SQL Server データベース エンジンでホストされるようになりました。この CLR 統合環境は、Microsoft Visual C# や Visual Basic .NET などの .NET Framework ベース言語で作成したプロシージャ型のデータベース オブジェクト (関数、ストアド プロシージャ、トリガなど) をサポートしています。.NET Framework ベース言語では、Transact-SQL 言語では使用できないロジックや機能がサポートされるので、従来よりも複雑なロジックをデータベース オブジェクトに組み込むことが可能です。ユーザー定義型やユーザー定義集計も .NET Framework ベース言語で作成でき、旧バージョンの SQL Server よりも複雑なデータ型を作成できるようになりました。

この CLR 統合プログラミング環境は、Visual Studio 開発環境に統合されています。開発者は、クライアントや中間層で使用する .NET のコンポーネントやサービスを開発する場合と同じツールを使用して、データベース オブジェクトの開発とデバッグを行えます。

詳細については、「CLR (共通言語ランタイム) 統合の概要」を参照してください。

Microsoft .NET Framework : ユーザー定義集計

ユーザー定義集計関数を .NET Framework ベース言語で作成すれば、Transact-SQL に含まれている SUM、MIN、MAX などの基本的な集計関数を拡張できます。集計関数とは、いくつかのデータ値を処理して 1 つの値を返す関数です。.NET Framework の集計関数は、結果セット全体をアプリケーションに取り込んでからそのアプリケーションで複雑な集計ロジックを実行するのではなく、データベース エンジン インスタンスの中でロジックを実行することができ、アプリケーションには最終的な値だけを返します。

詳細については、「CLR ユーザー定義集計」を参照してください。

Microsoft .NET Framework : ユーザー定義型

CLR ユーザー定義型 (UDT) を使用すれば、.NET Framework CLR でサポートされている任意の言語でデータベースのデータ型を実装できます。CLR ユーザー定義型は、.NET Framework ベース言語にクラスとして実装されており、そのクラスのフィールド、メソッド、プロパティによって複雑な構造や動作を定義できます。CLR ユーザー定義型は、データベース エンジンのデータ型システムに統合され、組み込みのデータ型を使用できるあらゆるコンテキストで使用できます。

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

Microsoft .NET Framework : ストアド プロシージャ、トリガ、ユーザー定義関数

プロシージャ型のデータベース オブジェクトを .NET Framework ベース言語で作成すれば、Transact-SQL 言語がサポートするものよりも複雑なロジックを組み込むことが可能です。これらのオブジェクトの開発には、.NET Framework のコンポーネントやサービスを開発する場合と同じ言語や開発環境を使用できます。

詳細については、「CLR ストアド プロシージャ」、「CLR トリガ」、「CLR ユーザー定義関数」を参照してください。

Web アクセス : ネイティブ HTTP SOAP アクセス

データベース エンジン インスタンスには、アプリケーションから SOAP 要求を送信する宛先として、HTTP のエンドポイントまたはアドレスを設定できます。パケットはデータベース エンジン インスタンスが直接受信するので、Microsoft インターネット インフォメーション サービス (IIS) サーバーなどの中間層サービスを構成する必要はありません。

詳細については、「SQL Server 2005 におけるネイティブ XML Web サービスの使用」を参照してください。

Transact-SQL の機能強化 : 新しい xml データ型

データベース エンジンでは、XML ドキュメントやフラグメントのデータベースへの格納をサポートする新しい xml データ型が導入されました。xml データ型で作成した列、ストアド プロシージャのパラメータ、および変数には XML インスタンスを格納できます。

詳細については、「xml データ型」を参照してください。

Transact-SQL の機能強化 : FOR XML の機能強化

FOR XML ステートメントを入れ子にすることによって、XML ドキュメントの階層を作成できます。FOR XML ステートメントの結果は、新しい xml データ型で定義した列、ストアド プロシージャのパラメータ、または変数に格納できます。

詳細については、「FOR XML の新機能」を参照してください。

Transact-SQL の機能強化 : 強化されたエラー処理

Transact-SQL のバッチ、ストアド プロシージャ、トリガ、ユーザー定義関数を記述するときには、使い慣れた TRY-CATCH ロジックを使用して、エラー条件をトラップして処理できます。

詳細については、「データベース エンジン エラーの処理」を参照してください。

Transact-SQL の機能強化 : 新しいメタデータ ビュー

SQL Server 2005 データベース エンジンには、メタデータのクエリに使用できる新しいビューのセットが 2 つ用意されました。システム カタログ ビューは、SQL Server データベースで定義されているテーブル、ストアド プロシージャ、制約などのオブジェクトに関する情報を提供します。動的管理ビューは、データベース エンジン インスタンスの現在の状態に関する情報を提供します。動的管理ビューに表示されるのは、メモリ構造から取得した、ディスクには持続的に格納されない情報 (ロック、スレッド、タスクに関する情報など) です。

詳細については、「SQL Server システム カタログに対するクエリ」を参照してください。

Transact-SQL の機能強化 : 順位付け関数

データベース エンジンには、順位付け関数という新しいカテゴリの関数が用意されました。このカテゴリに含まれる関数は、以下のとおりです。

  • RANK
  • DENSE_RANK
  • NTILE
  • ROW_NUMBER

これらの関数は、パーティション内の各行の順位付けの値を返します。

これらの関数の一覧については、「順位付け関数 (Transact-SQL)」を参照してください。

Transact-SQL の機能強化 : データ定義言語 (DDL) トリガ

データを変更するためのデータ操作言語ステートメント (INSERT、UPDATE、DELETE) によって起動されるトリガのサポートに加えて、データベース エンジンには、データベース オブジェクトを変更するための DDL ステートメント (CREATE、ALTER、DROP で始まるステートメントなど) によって起動される新しいクラスのトリガが追加されました。DDL トリガは、データベース スキーマに対する変更の監査や制御に使用できます。

詳細については、「DDL トリガ」を参照してください。

Transact-SQL の機能強化 : イベント通知

データベース エンジンでは、新しい種類のオブジェクトであるイベント通知をプログラミングできます。イベント通知は、Transact-SQL DDL ステートメントや SQL トレースのイベントに関する情報を Service Broker サービスに送信します。データベース上で発生する変更や処理をログに記録して後で検討するために、イベント通知を使用できます。実行は非同期であり、プログラミングにおいて DML トリガ、DDL トリガ、SQL トレースの代わりに使用することも可能です。

詳細については、「イベント通知の実装」を参照してください。

Transact-SQL の機能強化 : キュー処理の拡張機能

Transact-SQL の 3 つの機能強化によって、疎結合で信頼性の高い、インターネット スケールの、およびビジネス プロセス自動化システムのメッセージ キュー アプリケーションを作成する作業を簡略化できます。INSERT、UPDATE、DELETE では、それぞれのステートメントで変更した行に基づくデータを返す OUTPUT 句がサポートされるようになりました。UPDATE ステートメントと DELETE ステートメントには、READPAST を指定して、他のタスクが保持しているキュー行をスキップし、キュー内の次に使用可能な行を処理するようにすることも可能です。

詳細については、「OUTPUT 句 (Transact-SQL)」と「ロック ヒント」を参照してください。

Transact-SQL の機能強化 : ラージ オブジェクトのための統一的なプログラミング モデル

旧バージョンの SQL Server では、8,000 バイトを超える大きな文字列は、textntextimage の各データ型で格納する必要があり、これらのデータ型のプログラミング モデルは、小さな文字列のためのデータ型 (charncharvarcharnvarcharbinaryvarbinary) のプログラミング モデルとは異なっていました。このバージョンのデータベース エンジンでは、小さな文字列のためのデータ型に関して MAX の長さを指定できます。MAX を指定すると、それらのデータ型で textntextimage の値と同じサイズ (最大 2 GB) の文字列を格納できますが、処理方法は小さな文字列を格納した場合と変わりません。

詳細については、「大きな値のデータ型の使用」を参照してください。

Transact-SQL の機能強化 : 再帰クエリ

SELECT、INSERT、UPDATE、または DELETE ステートメントの実行中に一時的に格納される結果セットのことを共通テーブル式 (CTE) といいます。一時テーブルや一時ビューの代わりにこの CTE を使用すれば、再帰クエリの活用によってロジックを簡略化できます。

詳細については、「共通テーブル式の使用」を参照してください。

Transact-SQL の機能強化 : 新しい APPLY 演算子

APPLY 演算子は、外部テーブルの参照から返される各行に対するテーブル値式 (テーブル値関数またはサブクエリ) の呼び出しをサポートしています。テーブル値式は、外部テーブルの参照内の各行に関して評価されます。

詳細については、「APPLY の使用」を参照してください。

Transact-SQL の機能強化 : 新しい PIVOT 演算子と UNPIVOT 演算子

新しい PIVOT 演算子と UNPIVOT 演算子は、結果セットを回転させます (つまり、列が行になり、行が列になります)。これは、データの回転、またはクロス集計レポートの作成と呼ばれます。この操作は旧バージョンの SQL Server でも可能でしたが、そのためには複雑なロジックが必要でした。PIVOT と UNPIVOT を使用すれば、この操作を簡略化できます。

詳細については、「PIVOT と UNPIVOT の使用」を参照してください。

Transact-SQL の機能強化 : クエリ通知

クエリ通知を使用すると、アプリケーションでは結果セットをキャッシュに入れておき、基になるデータが他のアプリケーションによって変更された場合にデータベース エンジンがそのアプリケーションに通知を行うようにすることができます。クエリ通知を使用するアプリケーションでは、データベース内のデータの状態を周期的に確認する必要はありません。データベース エンジンから変更の通知があったときにデータを検証するだけで十分です。

詳細については、「クエリ通知の使用」を参照してください。

Transact-SQL の機能強化 : OPENROWSET の一括操作

OPENROWSET で、データ ファイルからデータを一括コピーする BULK 操作が可能になりました。OPENROWSET の一括操作を制御するには、新しいテーブル ヒントと一括オプション (BULK_BATCHSIZE や FORMATFILE など) を使用します。新しい bulk_column_alias 句を使用して、一括操作データに列名を割り当てることも可能です。

詳細については、「OPENROWSET (Transact-SQL)」と「テーブル ヒント (Transact-SQL)」を参照してください。

Transact-SQL の機能強化 : TOP の機能強化

TOP 演算子の機能が強化され、演算子によって返される行数を示す整数だけではなく、任意の数値式 (変数名など) を指定できるようになりました。TOP は、INSERT、UPDATE、DELETE の各ステートメントでも指定できるようになっています。

詳細については、「TOP (Transact-SQL)」を参照してください。

Transact-SQL の機能強化 : 分散クエリ

EXECUTE ステートメントで、ストアド プロシージャをリンク サーバーで実行することを指定する AT LinkedServer 句を使用できるようになりました。フルテキスト述語 CONTAINS では、リンク サーバーに対してクエリを実行するために、4 つの要素で構成される名前がサポートされます。分散クエリでは、新しいラージ オブジェクト データ型である nvarchar(max)varchar(max)、および varbinary(max) もサポートされます。分散クエリと OLE DB プロバイダの相互作用の分析に役立つ新しい SQL トレース イベントも追加されています。

詳細については、「EXECUTE (Transact-SQL)」、「CONTAINS (Transact-SQL)」、「分散クエリでのデータ型のマッピング」、「OLEDB イベント カテゴリ」を参照してください。

Transact-SQL 拡張機能 : TABLESAMPLE

新しい TABLESAMPLE 句によって、クエリが処理する行の数を制限できます。結果セットの上位にある行だけを返す TOP とは異なり、TABLESAMPLE は、クエリが処理する行のセット全体から行を選択して返します。

詳細については、「TABLESAMPLE 句の使用による結果セットの制限」を参照してください。

Transact-SQL の機能強化 : 新しい CASCADE 整合性制約

REFERENCES 句は、連鎖参照整合性制約の操作である SET NULL と SET DEFAULT をサポートするようになりました。SET NULL を指定した場合は、連鎖参照整合性の操作によって外部キーが NULL に設定されます。SET DEFAULT を指定した場合は、外部キーがその列に定義されている既定値に設定されます。

詳細については、「連鎖参照整合性制約」を参照してください。

Transact-SQL の機能強化 : ページ サイズを超えたオーバーフロー データのサポート

行に nvarcharvarcharvarbinary、および sql_variant のいずれかのデータ型を使用した可変長列が含まれている場合、行のサイズが 8,060 バイトの制限を超えることがあります。可変長の列の幅を合計すると行の長さがページ サイズの制限を超えてしまう場合でも、データベース エンジンでは、可変長の列のデータを別のページに移動できます。

詳細については、「8 KB を超える場合の行オーバーフロー データ」を参照してください。

データベース管理プログラミング : 新しい SQL Server 管理オブジェクト (SMO) API

SMO オブジェクト モデルは、分散管理オブジェクト (DMO) オブジェクト モデルを拡張し、それに代わるオブジェクト モデルとして用意されています。SMO オブジェクト モデルには、データベース エンジン インスタンスの構成と管理を行うためのクラスが用意されています。SMO オブジェクト モデルを補完するレプリケーション管理オブジェクト (RMO) オブジェクト モデルには、レプリケーションの構成と管理に使用できるクラスが用意されています。

詳細については、「SQL Server 管理オブジェクト (SMO)」を参照してください。

データベース管理プログラミング : 新しい SQL Server WMI プロバイダ

WMI Provider for Computer Management は、インスタンス プロバイダです。この層の目的は、サーバーとクライアントのネットワーク ユーティリティ機能によって要求されるレジストリ操作を管理する API 呼び出しと、コンピュータ マネージャ スナップイン コンポーネントの選択された SQL サービスの制御と操作を実行する機能を強化するための API 呼び出しに対する統一的なインターフェイスを用意することです。

詳細については、「構成管理用の WMI プロバイダ」を参照してください。

WMI Provider for Server Events を使用すれば、WMI (Windows Management Instrumentation) によって SQL Server のイベントを監視できます。このプロバイダは、SQL Server を管理対象の WMI オブジェクトにすることによって機能します。SQL Server でイベント通知を生成できるイベントであれば、このプロバイダを使用して、WMI による監視の対象にできます。さらに、WMI と連動する管理アプリケーションとして、SQL Server エージェントがそれらのイベントに応答できるので、SQL Server エージェントで対応できるイベントのスコープが旧リリースよりも広くなります。

詳細については、「WMI Provider for Server Events」を参照してください。

参照

概念

データベース エンジンの機能強化

ヘルプおよび情報

SQL Server 2005 の参考資料の入手