データベース開発者向けの SQL Server „Yukon„ の概要

Matt Nunn

Microsoft Corporation

October 2003

概要 : 本書では、Microsoft® SQL Server™ の SQL Server "Yukon" の機能について説明します。 本書では、データベースの可用性とスケーラビリティについてだけでなく、データベース管理に関する新しい機能の概要を提供します。

On This Page

データベース開発の新しいパラダイム
.NET 統合
XML テクノロジ
新しいアプリケーション フレームワーク
エンジンの機能強化
まとめ

データベース開発の新しいパラダイム

"Yukon" というコードネームの次期バージョンの Microsoft SQL Server の登場により、データベース開発環境が変化しようとしています。 開発者は、機能に応じた場所にコードを配置したり、XML のようなネイティブ形式のデータにアクセスしたり、データベース サーバーの機能を利用して複雑なシステムをビルドしたりすることが可能になりました。 また、データベース開発は、開発者がすぐに利用できる必要のあるさまざまなツールと、かつてないほど密接に統合されるようになります。

本書では、開発者が新しいクラスのデータベース アプリケーションをビルドできるようにする、いくつかの新機能について見ていきます。

.NET 統合

データベース プログラマは、SQL Server "Yukon" Beta 1 のリリースにより、.NET の基本クラス ライブラリや新しいプログラミング言語を最大限に活用して、サーバーに機能を実装できるようになります。 データベース開発者は、共通言語ランタイム (CLR) 統合を使用して、好みの .NET 言語でストアド プロシージャ、関数、トリガ、およびユーザー定義型のコードを記述できます。 Visual Basic .NET および C# には、オブジェクト指向の構造体、構造化例外処理、配列、名前空間、およびクラスが用意されています。 さらに、.NET Framework には、サーバー側で簡単に使用できる組み込みの拡張機能を持つ多数のクラスとメソッドが用意されています。 マネージ コードと "Yukon" で導入される 2 つの新しい種類のデータベース オブジェクト、集計、ユーザー定義型を使用して、T-SQL で実行するのが不便または困難だった多くのタスクをより簡単に完成できるようになります。 開発者は、インプロセス コードの記述に関して既に取得している知識とスキルをより効率的に活用できるようになります。 つまり、開発者は SQL Server "Yukon" Beta 1 により、データベース サーバーを拡張して、バック エンドでの計算や操作をより簡単かつ適切に実行できるようになります。

この SQL Server と .NET の統合により、データベース開発者には、次のような大きな利点がいくつかもたらされます。

  • "プログラミング モデルの強化" : .NET 言語は多くの点において、Transact-SQL (T-SQL) よりも機能が豊富で、以前は SQL 開発者が使用できなかった構造や機能が用意されています。

  • "安全性とセキュリティの強化" : マネージ コードは共通言語ランタイム環境で動作し、データベース エンジンによりホストされます。 これにより、.NET データベース オブジェクトは、以前のバージョンの SQL Server で使用できた拡張ストアド プロシージャよりも安全性が高く、セキュリティで保護できるようになります。

  • "ユーザー定義型と集計" : CLR をホストすることにより、SQL Server のストレージ機能とクエリ機能を拡張する、2 つの新しいデータベース オブジェクトが有効になります。

  • "共通の開発環境" : データベース開発は、Microsoft Visual Studio .NET 開発環境の今後のリリースに統合されます。 開発者は、データベース オブジェクトやスクリプトの開発とデバッグを行う際に、中間層またはクライアント層の .NET コンポーネントやサービスの記述に使用しているのと同じツールを使用できます。

  • "パフォーマンスとスケーラビリティ" : マネージ コードは実行前にネイティブ コードにコンパイルされるので、シナリオによってはパフォーマンスが大幅に向上します。

マネージ コードでは、コード アクセス セキュリティ (CAS) を使用して、アセンブリによる特定の操作の実行が防止されます。 Microsoft SQL Server "Yukon" では CAS を使用してマネージ コードを管理し、オペレーティング システムやデータベース サーバーが危険にさらされないようにします。 CLR では、ジャスト イン タイム コンパイル、メモリの割り当てと管理、タイプ セーフティの設定、例外処理、スレッド管理およびセキュリティなど、プログラムの実行に必要なさまざまな機能やサービスが用意されています。 CLR は、.NET ルーチンの最初の呼び出しで、SQL Server により読み込まれます。

開発者は、Visual Basic .NET や C# などの言語を使用して、より複雑なロジックを持つコードや、コンピュータ処理作業に適したコードの記述に、CLR 統合を利用できます。 さらに、Visual Basic .NET や C# では、カプセル化、継承、ポリモーフィズムなど、オブジェクト指向の機能が用意されています。 関連するコードにより、クラスや名前空間を容易に体系化できるようになりました。 大量のサーバー コードを使って作業する場合、この機能により、コード資産をより簡単に体系化および管理できます。 論理的、物理的にコードをアセンブリまたは名前空間に体系化する機能は非常に役立ち、大規模なデータベースの実装では、さまざまなコードをより容易に検索して、関連付けることが可能になります。

マネージ コードは、大量の計算や複雑な実行ロジックでは、T-SQL よりもはるかに優れており、文字列処理や正規表現などの拡張サポートも備えています。 また、データベース開発者は、.NET Framework の基本クラス ライブラリで使用できる機能によって、ストアド プロシージャ、トリガまたはユーザー定義関数から簡単にアクセスできる、数多くのクラスやルーチンに完全にアクセスできます。 マネージ ストアド プロシージャ、関数、トリガ、および集計から、強化された文字列処理関数、数学関数、日付操作、システム リソースへのアクセス、高度な暗号化アルゴリズム、ファイル アクセス、イメージ処理、および XML データ操作のすべてに簡単にアクセスできます。

マネージ コードの主な利点の一つに、タイプ セーフティがあります。 マネージ コードが実行される前に、CLR によりコードが安全かどうか確認されます。 このプロセスを "検証" といいます。 検証中、コードを安全に実行できることを保証するために、CLR によりいくつかの確認処理が行われます。 たとえば、コードが調査され、書き込まれていないメモリが読み取られないことが確認されます。 また、CLR により、バッファ オーバーフローも防止されます。

T-SQL とマネージ コード間の選択

ストアド プロシージャ、トリガ、およびユーザー定義関数を記述する場合、プログラマは従来の T-SQL を使用するか、Visual Basic .NET や C# などの .NET 言語を使用するかを決定することになります。 答えは、関係する特定の状況によって異なります。 T-SQL の使用に適した状況もあり、マネージ コードの使用に適した状況もあります。

T-SQL は、手続き型のロジックがほとんど、またはまったくない、データ アクセスを主に実行するコードでの使用に最も適しています。 .NET 言語は、CPU を集中的に使用する関数や複雑なロジックを備えたプロシージャ、または .NET Framework の基本クラス ライブラリを利用する場合に適しています。

また、コードの配置も重要になります。 T-SQL とインプロセス マネージ コードは、どちらもサーバーで実行されます。 そのため、機能とデータが近くに配置されることになり、サーバー コンピュータの処理能力を活用できるようになります。 一方、プロセッサを集中的に使用するタスクをデータベース サーバーに配置するのを避けることもできます。 現在の大部分のクライアント コンピュータは非常に強力なので、クライアントに可能な限り多くのコードを配置して、その処理能力を活用できます。 "すべてに当てはまる" 答えはありません。

Web サービス

SQL Server "Yukon" では、開発者は Web サービスをデータベース層で開発でき、SQL Server を HTTP リスナにできます。 これにより、Web サービス中心のアプリケーションの新しい種類のデータ アクセス機能が提供されます。 Microsoft SQL Server "Yukon" Beta 1 では、HTTP を使用して、Microsoft インターネット インフォメーション サービス (IIS) サーバーのような中間層リスナを必要とせずに、SQL Server に直接アクセスできます。 SQL Server では、SQL ステートメントの実行、機能やプロシージャの呼び出しを行える、Web サービス インターフェイスが公開されます。 クエリ結果は XML 形式で返され、Visual Studio の Web サービス インフラストラクチャを利用できます。

ADO.NET

次のバージョンの ADO.NET には多数の新機能があります。ADO.NET では、SQLTypes の新しいサポートから、複数のアクティブ結果セットまで、データ セット アクセスや操作を発展させ、より高度なスケーラビリティと柔軟性を実現しています。

SQLTypes のデータ セット サポート

Microsoft SQL Server "Yukon" Beta 1 では、Visual Basic .NET や C# などの .NET 言語で、ユーザー定義関数、プロシージャ、およびトリガを作成するためのマネージ SQL 型が提供されます。 SQL 型は、.NET ランタイム基本クラス ライブラリの一部であるデータ型のセットです。 .NET ランタイムの他のデータ型では NULL の認識などのセマンティクスが提供されませんが、SQL 型では、対応するネイティブ SQL Server データ型と同じセマンティクスと同一の動作が提供されます。 たとえば、CLR の string データ型ではなく、NULL が認識される SqlString データ型が提供されます。 ADO.NET では、ADO.NET データセットおよびデータリーダーの SqlTypes ライブラリのセマンティクスがサポートされます。

ADO.NET: サーバー カーソル サポート (SQLResultset)

また、Microsoft SQL Server "Yukon" Beta 1 の ADO.NET では、サーバー カーソルのサポートが導入されます。 SQL クライアント マネージ プロバイダの ISqlResultSet インターフェイスを使用して、サーバー カーソル機能を使用できます。 サーバー カーソル機能には以下のものがあります。

  • 結果セットの特定の行に位置付けることができます。

  • 結果セットの現在位置から 1 行または 1 ブロックを取得します。

  • 結果セットの現在位置の行データの変更をサポートします。

結果セットがまだ開かれていて、データベースに接続されている間に他のユーザーがデータベースのデータに行った変更が、結果セットに表示されるときの表示のレベルを選択できます。

ADO.NET と MDAC: 通知のサポート

Microsoft SQL Server "Yukon" Beta 1 では、SQL Server クエリの通知サポートが導入されます。 このサポートを使用してコマンドを SQL Server に送信し、同じコマンドの再実行で導き出された結果が、最初に取得された結果と異なる場合に、通知が生成されるように要求できます。 ADO.NET、OLEDB、ODBC、ADO、および SOAP などのクライアント API により、サーバーに送信されるコマンドに通知を要求するタグが含めることができます。 サーバーでは、要求の一部として実行されるステートメントごとに、要求に含まれている各ステートメントに対して一度ずつ起動する "通知サブスクリプション" が作成されます。 通知は、アプリケーションがポーリングできる SQL Service Broker キュー経由で配布され、通知が使用可能になったときに必ず返される、アクティベーション サービスまたはブロッキング ステートメントを使用します。 クエリ通知は、データベース ドリブンの Web サイトのようなアプリケーションで、結果のキャッシュを有効にするのに役立ちます。

ADO.NET と MDAC: スナップショットの分離サポート

SQL Server "Yukon" Beta 1 では、スナップショット分離 (Snapshot Isolation; SI) レベルが新しく導入されます。 SI は、行のバージョン管理メカニズムで、データのバージョンがデータ リーダー用に格納されます。 この新しい分離レベルにより、以下の利点が提供されます。

  • 読み取り専用アプリケーションのデータの可用性が向上します。 OLTP 環境では、ブロッキングされない読み取り操作が許可されます。

  • トランザクションの書き込み、競合が自動的に必須で検出されます。

  • Oracle から SQL Server へのアプリケーションの移行が簡単になります。

たとえば、ロックが原因で、同時に同じデータの書き込みと読み取りを行っているアプリケーション間で、ブロックが発生することがあります。 あるトランザクションで行が変更された場合、書き込みがコミットされるまで、他のトランザクションではその行を読み取れません。 リーダーは SI により、その行の以前にコミットされた値にアクセスできます。

スナップショット分離レベルは、ADO、OLE DB、SQL OLEDB、Shape プロバイダ、SQLODBC、OLE DB マネージ プロバイダ、および SQL マネージ プロバイダによってサポートおよび公開されます。

ObjectSpaces

Microsoft .NET ObjectSpaces は、データをオブジェクトとして扱うことを可能にするクラスとインターフェイスのセットで、アプリケーションで使用される元になるデータ ストアから独立しています。 ObjectSpaces は、Microsoft .NET Framework 内の新しいデータ アクセス API のセットを含み、その API のセットに基づいてビルドされています。ObjectSpaces により、Microsoft SQL Server™、OLE DB データ ソースなどのリレーショナル データ ソースへのアクセスが提供されます。

ObjectSpaces を使用して、以下のデータ関連の作業や手順を実行できます。

  • 特定のクエリ条件を使用して、データ ソースからデータをオブジェクトとして取得します。

  • 返されたオブジェクトを使用して、1 対多または 1 対 1 のリレーションシップをナビゲートします。

  • オブジェクトの値またはプロパティを変更します。

  • 変更を解決して、データ ソースに戻します。

アプリケーション コードとデータ ソースの独立性を維持するために、XML ベースのマッピング ファイルによりリレーショナル データとビジネス オブジェクト間のリレーションシップが指定されます。 ObjectSpaces テクノロジは Visual Studio.NET "Whidbey" の一部として同梱されます。

SQL Server Management Objects (SMO)

SQL Server Management Objects (SMO) は、SQL Server "Yukon" の管理オブジェクト モデルです。 SMO では、SQL Server 管理オブジェクト モデルのデザインおよびアーキテクチャが大幅に機能強化されています。 使い方は簡単ですが、.NET マネージ コードに基づく機能豊富なオブジェクト モデルです。 SMO は、.NET プラットフォームを使用してデータベース管理アプリケーションを開発するための主要なツールです。 SMO は、SQL Server "Workbench" のすべてのダイアログで使用され、SQL Server "Workbench" で実行できるすべての管理操作も SMO を使用して実行できます。

新しい SMO オブジェクト モデルと WMI API により、SQL-DMO が置き換えられます。 使いやすくするために、可能な個所では、SMO により SQL-DMO に似たオブジェクトが組み込まれます。 SQL Server "Yukon" Beta 1 を SQL-DMO と共に使用できますが、SQL-DMO は "Yukon" 固有の機能を管理するようには更新されません。

SMO と SQL-DMO

SMO オブジェクト モデルは SQL-DMO に実装された機能の論理後継機能です。 SMO は SQL-DMO と完全な互換性があり、同じオブジェクトを多数含んでいます。 元の SQL-DMO のデザインに従うこともできますが、SMO には SQL-DMO を超える多数の追加機能があります。 SQL Server "Yukon" の最大限の DDL と管理の範囲を実現するために、SMO では 150 以上の新しいクラスが追加されます。

SMO の主要な利点は、パフォーマンスとスケーラビリティにあります。 SMO にはキャッシュされるオブジェクト モデルがあります。これにより、SQL Server に変更を反映する前に、オブジェクトのいくつかのプロパティを変更できます。 結果として、SMO の使用により、サーバーへのラウンドトリップを少なくなり、オブジェクトがより柔軟になります。 また、SMO ではインスタンスの作成が最適化されるので、オブジェクトのインスタンスを部分的または完全に作成できます。 オブジェクトのすべてのプロパティのインスタンスを作成しないことで、多数のオブジェクトを迅速に読み込めるようになります。

単一のアプリケーション ルートを持ち、すべての作成済みのサーバー オブジェクトへの参照を保持する SQL-DMO とは異なり、SMO では新しい接続を確立せずに、サーバーへの複数のルートを確立できます。 SMO では、SQL-DMO 形式のスクリプト作成のサポートに加えて、高度なマルチフェーズのスクリプト作成を実装します。 また、オブジェクトをキャプチャ モードに切り替えて、実際にサーバーに変更を適用しないで、オブジェクトに発行されるすべての DDL をキャプチャすることもできます。

また、SQL-DMO には、インターフェイスを WMI に単純化する管理されたコンピュータ オブジェクトがあり、SMO オブジェクト インターフェイスにより WMI の監視とサーバー構成をサポートします。

XML テクノロジ

XMLはデータの格納および転送の一般的な形式で、マークアップ、構造化、および半構造化された情報に広く使用されています。 このような種類のデータの例には、テキスト (ドキュメントの構造を識別および強調するマークアップ)、ネストされるオブジェクト (構造化)、およびあるインスタンスから別のインスタンスに構造を変更できる異種データ (半構造化) があります。 XML もまた重要で、さまざまなアプリケーションの間でローカル ネットワークやインターネット経由で、データを配布する際の標準として広く受け入れられています。

Microsoft® SQL Server™ 2000 では、SQLXML によって XML の使用をサポートしています。SQLXML により、リレーショナル データを XML 形式に変換し、XML データをリレーショナル テーブルに格納できます。 Microsoft SQL Server "Yukon" Beta 1 では、XML を最上級のデータ型としてサポートし、XML ドキュメント用の新しいクエリ言語を提供し、ユーザーがインプレースの変更を実行できるようにすることで、この機能に基づいています。

XML データを処理するユーザーのニーズへのサポートを強化するために、新しく xml データ型が導入されます。 このデータ型には、現在の XQuery 仕様の大部分を実装する多数のメソッドや関数があります。 実際、SQL Server "Yukon" Beta 1 でも、XML DML を追加して XQuery 仕様が拡張しています。 XML の入力をサポートするために、XML スキーマの登録と管理にキーワードが追加されました。 SQL Server 2000 で XML の取得および記述用に導入された 2 つの機能、FOR XML と OPENXML にも変更があります。 これらは xml データ型のサポートと共に強化されました。

XML データ型

XML は、SQL Server に格納できる他の種類のデータよりもかなり複雑です。 したがって、char や varchar など、文字列ベースの組み込みデータ型では、XML の能力と多数の利点を活用するには十分ではありません。 たとえば、XML が文字列として格納されている場合、ドキュメント全体を挿入または選択できますが、ドキュメント自体の内容にクエリすることはできません。 SQL Server "Yukon" では、xml データ型の提供により、XML ドキュメントの一部のクエリ、ドキュメントが XML スキーマに準拠しているかどうかの確認、適切な XML ドキュメントのコンテンツの変更が可能になります。 また、SQL Server 2000 では不可能だった方法で、従来のリレーショナル データを、構造化されていないまたは半構造化された XML ドキュメントに統合します。SQL Server "Yukon" では、XML データはバイナリ ラージ オブジェクト (BLOB) として格納され、取得が容易になります。

XML スキーマは、xml 型の列に関連付けられます。 この機能により、ストレージやクエリ処理の最適化、XML データの入力と共に、制約、挿入、および更新の検証が提供されます。 また、Microsoft SQL Server "Yukon" では、サーバーでスキーマを管理する、いくつかのデータ定義言語 (DDL) ステートメントも提供されます。

XML の取得と記述

Microsoft SQL Server "Yukon" Beta 1 には、SQL Server 2000 で最初に導入された FOR XML および OPENXML 機能へのいくつかの機能強化が含まれています。

FOR XML

SQL Server 2000 の FOR XML 句では、サーバーでの XML 結果を使用する方法が提供されていませんでした。 XML 結果を (最初に結果をクライアントに戻さずに) テーブルに格納すること、または変数に代入することはできません。 SQL Server "Yukon" Beta 1 では、xml データ型のサポートを追加し、サーバーでの XML 使用を許可することにより、FOR XML が強化されています。 これはクエリに基づいてユーザーの意図を推量することによって行われます。 たとえば、SELECT...FOR XML ステートメントの結果がローカル変数に代入される場合、または後に続く INSERT ステートメントで使用される場合、XML がコピーされ、再利用されます。 変数または列のデータ型、nvarchar または xml に、XML が暗黙的にキャストされます。

OpenXML

基本的に、SQL Server 2000 では、FOR XML 句と OPENXML 行セット関数を相対するものとして扱っていました。 つまり、FOR XML でリレーショナル データを XML として取得でき、OPENXML では XML をリレーショナル データに変換して、SQL 結合をセットアップし、クエリを実行できます。 SQL Server "Yukon" Beta 1 では、OPENXML の機能を強化します。 xml データ型に加えて、utcdatetime、utctime、UDT など、いくつかの新しいデータ型へのサポートが提供されます。 これらはすべて、OPENXML WITH 句で使用できます。

XQuery のサポート

XML Query 言語 (XQuery) は、高機能で堅牢な言語で、すべての種類の XML データのクエリ用に最適化されています。 XQuery により、xml データ型の変数および列に対して、列の関連メソッドを使用してクエリを実行できます。 多くの XML 標準と同様に、XQuery の開発は W3C によって監修されています。 XQuery は、XPath 1.0、 XQL、SQL など、さまざまな他のクエリ言語に基づく Quilt というクエリ言語から発展しました。 また、XQuery には、サブセットとして XPath 2.0 が含まれています。 したがって、XPath を使用した経験があれば、そのスキルを応用できるので、完全に新しいクエリ言語を学ぶ必要がありません。 ただし、繰り返しを改善する特別な関数やサポート、結果の並べ替え、および構築など、XPath を超える大きな機能強化が行われています。

Microsoft SQL Server "Yukon" Beta 1 は、データ階層での XML オブジェクト操作や XQuery 作成用の新しいツールセットなど、高度な XQuery 機能を備えています。 2001 年 12 月 20 日から 2002 年 11 月 15 日までの XQuery 1.0 Working Draft の、静的に入力されたサブセットがサポートされます。

DML の拡張

XML Data Modification Language (DML) は、W3C 仕様で制定されている XQuery 機能の拡張です。 XQuery 仕様には現在、クエリのセマンティクスが含まれていますが、XML ドキュメントの変更のセマンティクスは含まれていません。 SQL Server "Yukon" Beta 1 では、insert、update、delete の 3 つのキーワードが追加されます。 これらはすべて、xml データ型の変更メソッド内で使用されます。

XQuery デザイナ

Microsoft SQL Server "Workbench" では、開発者が XML クエリをビルドするのを支援するために、新しい XQuery デザイナが導入されます。 開発者は XQuery デザイナにより、XML データ列のツリー表現から XML ノードをドラッグ アンド ドロップして、簡単に XML クエリをビルドできます。 マウスをシングル クリックするだけで XML クエリを実行できます。 より複雑な XQuery の構築を追加するために、XML クエリ テキスト エディタも提供されます。 XQuery デザイナを使用して XML クエリをビルドし、後で SELECT ステートメントの内部で使用できるだけでなく、レポートにも使用できます。 SQL Workbench では、関連する XML クエリを共に格納する、プロジェクト システムが提供されます。

新しいアプリケーション フレームワーク

SQL Server "Yukon" では 2 つの新しい SQL Server アプリケーション フレームワーク、SQL Server Broker および SQL Server Reporting Services が導入されます。 SQL Service Broker は、データベース対データベースのレベルでの信頼できる非同期メッセージングを提供する、分散アプリケーション フレームワークです。 Reporting Services は、エンド ユーザーが段階ごとに IT 部門に頼ることなく、カスタムおよび標準のビジネス レポートを作成、使用することを支援する、新しいテクノロジです。

SQL Service Broker

この 10 年間で、電子商取引アプリケーションの急増により、データベース アプリケーション間のプロセス管理を強化する必要が生じてきました。 受注エントリ システムをビルドした経験、またはオンラインで何かを注文した経験があれば、このことを理解されているでしょう。 顧客が書籍を注文すると、この注文により、在庫システム、配送システム、およびクレジット カード システムへのトランザクションがコミットされ、さらに他の Web アプリケーション経由で注文の確認を送信する必要があります。 これらのプロセスのそれぞれが順番どおりに発生するのを待つのでは、効率が良くありません。 SQL Server "Yukon" では、非同期メッセージ ルーティングをビルドする、新しい、スケーラブルなアーキテクチャが提供されます。

SQL Server Service Broker テクノロジでは、通常の T-SQL Database Manipulation Language を使用して、保証された非同期メッセージを送受信する内部または外部のプロセスを使用できます。 メッセージは、送信元と同じデータベースのキュー、同じ SQL Server インスタンス内の他のデータベース、または同じサーバーまたはリモート サーバー内の他の SQL Server インスタンスに送信されます。

Reporting Services

マイクロソフトは、Microsoft® SQL Server™ "Yukon" のリリースにより、統合されたビジネス インテリジェンス プラットフォームの主要な新しいコンポーネントを拡張しました。 SQL Server Reporting Services では Microsoft BI のビジョンが拡張され、あらゆるビジネス環境で、ユーザーに適した情報を届けることが容易になりました。

Reporting Services は、従来のレポートおよびインタラクティブなレポートを作成、管理、および配布する、完全なサーバー ベースのプラットフォームです。 レポートを作成、配布および管理するために、"製品" に必要なすべての機能が含まれています。 同時に、ソフトウェア開発者、データ プロバイダ、および企業は、製品のモジュラ デザインおよび拡張アプリケーション プログラミング インターフェイス (API) により、レポートを従来のシステムまたはサード パーティのアプリケーションと統合できます。

Reporting Services は SQL Server "Yukon" に同梱されており、以下のものが含まれています。

  • レポートを作成、管理、および表示するための完全なツールのセット

  • レポートをホストおよび処理するためのエンジン

  • さまざまな IT 環境で、レポートの埋め込みまたはソリューションの統合を行うための、拡張アーキテクチャおよびオープン インターフェイス

Notification Services

Microsoft® SQL Server™ Notification Services は、アプリケーションの開発と展開用のプラットフォームで、通知を生成してユーザーに送信します。 通知は個人用に設定された、タイムリーなメッセージで、さまざまな種類のデバイスに送信できます。

通知にはサブスクライバの好みが反映されます。 サブスクライバは、関心のある情報を表現するサブスクリプションを入力します。 たとえば、「ADCP の株価が 70.00 ドルになったら通知する」または「チームで作成中の戦略ドキュメントが更新されたら通知する」などです。

トリガとなるイベントが発生したらすぐに通知が生成され、ユーザーに送信されます。 または、ユーザーが指定するあらかじめ決められたスケジュールで通知を生成し、送信することもできます。 ユーザーのサブスクリプションにより、通知を生成してユーザーに送信するタイミングが指定されます。

通知はさまざまなデバイスに送信できます。 たとえば、通知はユーザーの携帯電話、携帯情報端末(PDA)、Microsoft Windows Messenger、または電子メール アカウントに送信できます。 これらのデバイスは、ユーザーが携帯していることが多いので、通知は、優先度の高い情報の送信に理想的です。

SQL Server Mobile Edition

SQL Server Compact Edition (現在は SQL Server Mobile Edition v3.0 といいます) は SQL Server 2000 に同梱されていました。SQL Server Mobile Edition v3.0 には、開発者に関係する、多数の重要な新しい機能があります。

  • SQL Server Mobile Edition v3.0 データベースを SQL Workbench からデスクトップまたはデバイスに直接作成できます。データベースの場所がモバイル デバイスか、デスクトップかに関係なく、SQL Server Mobile Edition v3.0 データベースのスキーマを、SQL Workbench から直接操作することも可能です。さらに、SQL Workbench 経由でデバイスまたはデスクトップの SQL Server Mobile Edition v3.0 データベースを対象にクエリを実行できます。また、ネイティブの SQL Server のように GUI 形式で表示される XML プラン表示、および SQL Server Mobile Edition v3.0 でクエリ オプティマイザをオーバーライドするクエリ ヒントを使用する機能を含む、新しい SQL Server Mobile Edition v3.0 の機能を活用できます。開発者は今回初めて、デバイスで最適化プランを管理できるようになります。

  • DTS オブジェクトのコードを記述して、データを交換できるようになります。

  • 新しい SQLCEResult セットは、SQL Server "Yukon" の SQLResult セットのコピーです。これにより、SQL Server Mobile Edition v3.0 で、実際にスクロールおよび更新が可能なカーソルを使用できます。また、デバイスのデータ オブジェクトへのバインドも可能になります。

  • 主要なアプリケーションを開いたまま、アプリケーションを同期させるようなコードを記述できます。また、デバイスの同じデータベースに、同時に 2 つの別のアプリケーションからアクセスできます。

  • 同期の状態を示すステータス バーにコードを記述できる通知を取得できます。以前は、デバイスが応答を停止していないことを通知する、同期状態の進行を知る方法はありませんでした。

  • さらに積極的なページ回復ポリシーが導入され、データベースのサイズを小さいまま保持できます。

  • パラメータ化クエリ コードを SQL Server 構文で共有できるようになります。

エンジンの機能強化

Transact-SQL の機能強化

Transact-SQL は長い間、すべての Microsoft SQL Server のプログラミングの基準でした。 Microsoft SQL Server "Yukon" Beta 1 では、スケーラビリティが高いデータベース アプリケーションの開発用に、多数の新しい言語機能が提供されています。 これらの強化にはエラー処理、新しい再帰クエリ機能、および新しい SQL Server エンジン機能のサポートがあります。 SQL Server "Yukon" Beta 1 での Transact-SQL の強化により、クエリ記述の表現力が増し、コードのパフォーマンスが向上し、エラー管理の機能が拡張されます。 Transact-SQL の強化に継続的な作業が行われているのは、Transact-SQL が SQL Server で主要な役割を果たしているのを確信しているためです。

再帰クエリと共通テーブル式

共通テーブル式 (CTE) は、定義しているステートメントによって参照できる名前付きの一時的な結果セットです。 CTE の単純な形式では、CTE を派生テーブルを強化したバージョンと見なすことができます。このバージョンは、非永続的なビューとよく似ています。 派生テーブルとビューを参照する方法と同様に、クエリの FROM 句で CTE を参照します。 CTE は 1 回だけ定義します。その後、クエリ内で CTE を数回参照できます。 CTE の定義では、同一バッチ内で定義された変数を参照できます。 また、ビューを使用する方法と同様に、INSERT、UPDATE、DELETE、および CREATE VIEW の各ステートメントも使用できます。 ただし、CTE の本当の能力は、CTE が CTE 自体を参照する再帰的な機能にあります。 クエリ結果を参照するときに、クエリ結果がテーブルであるかのように派生テーブルを使用しますが、データベースに永続的なビューを作成することは望みません。 ただし、派生テーブルには、CTE による緩やかな制限があります。 つまり、クエリ内で派生テーブルを一度定義して、それを数回使用することはできません。代わりに、同じクエリでいくつかの派生テーブルを定義する必要があります。 代替策として、CTE を一度定義して、データベース内で CTE を保存せずに、クエリ内でその CTE を数回使用することができます。

非再帰 CTE により表現力が向上します。 しかし、非再帰 CTE を使用するコードの各部分には、通常どおり、派生テーブルなどの Transact-SQL 構造体を使用して同じ結果にたどり着く長いコードを記述することになります。 このケースは、再帰 CTE とは異なります。 CTE が CTE 自体を参照する場合、CTE は再帰していると考えられます。 再帰 CTE は、少なくとも 2 個のクエリ (または再帰クエリ用法のメンバ) で構成されます。 1 つのクエリは、非再帰クエリであり、アンカー メンバ (AM) とも呼ばれます。 もう 1 つのクエリは、再帰クエリで、再帰メンバ (RM) とも呼ばれます。 クエリは、UNION ALL 演算子によって分離されます。

PIVOT 演算子と UNPIVOT 演算子

Microsoft SQL Server "Yukon" beta 1 では 2 つの新しいリレーショナル演算子を提供します。クエリの FROM 句で指定する、PIVOT および UNPIVOT です。 これらのリレーショナル演算子を使用すると、入力テーブル値式で何らかの操作を実行し、出力テーブルに結果を表示できます。 PIVOT 演算子は、行を列に変換し、変換を終えるまでに集計を実行します。 指定したピボット列に基づいて入力テーブル式を拡大して、ピボット列内の一意の値それぞれに対する列を持つ出力テーブルを生成します。

PIVOT 演算子は、オープン スキーマのシナリオの処理、およびクロス集計レポートの生成に役立ちます。 オープン スキーマのシナリオでは、各エンティティの種類に対して不明または異なる一連の属性を持つエンティティを管理します。 アプリケーションのユーザーは、属性を動的に定義します。 多くの列を事前定義して、テーブルに Null 値を多く格納するのではなく、属性を異なる行に分割し、エンティティの各インスタンスに関連する属性のみを格納します。 PIVOT を使用すると、オープン スキーマのシナリオや他のシナリオ向けのクロス集計レポートを生成できます。その際、行を列に変換し、変換が終わるまでに集計を計算して役立つ形式でデータを表示できます。

UNPIVOT 演算子は、PIVOT ととは逆の操作を実行します。つまり、列を行に変換します。 ピボット テーブル列に基づいて入力テーブル式を絞り込みます。 UNPIVOT 演算子により、ピボット化されていないデータを正規化できます。

APPLY

SQL Server "Yukon" Beta 1 では、APPLY 演算子により相関サブクエリのテーブル値関数関数を参照できます。 APPLY リレーショナル 演算子を使用して、外部テーブル式の行ごとに一度、指定されたテーブル値関数を呼び出すことができます。 JOIN リレーショナル演算子を使用するのと同様の方法で、クエリの FROM 句で APPLY を指定します。 APPLY には、CROSS APPLY および OUTER APPLY の 2 つの形式があります。

CROSS APPLY は、外部テーブル式の行ごとにテーブル値関数を呼び出します。 テーブル値関数の引数として外部テーブルの列を参照できます。 CROSS APPLY では、テーブル値関数の個別の呼び出しから返されたすべての結果から成る統一された結果セットが返されます。 テーブル値関数により、特定の外部行から空のセットが返される場合、その外部行は結果に返されません。

OUTER APPLY は CROSS APPLY に非常に似ていますが、テーブル値関数により空のセットが返された外部テーブルの行も返されます。 NULL 値は、テーブル値関数の列に対応する列の値として返されます。

トランザクションの例外処理

以前のバージョンの SQL Server では、Visual Basic 6.0 と同様に、エラーが発生し得るすべてのステートメントの後に、エラー処理コードを含める必要がありました。エラー チェック コードを集中管理するには、ラベルと GOTO ステートメントを使用する必要がありました。 さらに、データ型の変換エラーなどのエラーは、バッチが終了する原因となるので、そのようなエラーを Transact-SQL でトラップすることはできませんでした。 SQL Server "Yukon" Beta 1 では、Visual Basic .NET や C# の例外処理とよく似た、TRY/CATCH Transact-SQL 構造の形式の単純でありながら、非常に優れた例外処理メカニズムを導入して、このような問題の多くに対処しています。 バッチが終了する原因となっていたトランザクションのアボート エラーは、エラーが接続の切断の原因にならない限り、キャッチおよび処理できるようになりました。

BEGIN TRY/END TRY ブロック内に実行するコードを記述し、BEGIN CATCH TRAN_ABORT/END CATCH ブロックにエラー処理コードを追加するだけで、エラー処理を実装できます。 TRY ブロックは、対応する CATCH ブロックを持つ必要があることに注意してください。そうでない場合、構文エラーになります。

日付/時刻の処理の改善 (date、time、および utcdatetime データ型)

開発者にとっての最大の頭痛の種の 1 つに、日付と時刻の変数の管理があります。 以前のバージョンの SQL Server では、smalldatetime および datetime データ型に日付部分と時刻部分の両方が含まれていました。日付と時刻に対して個別のデータ型はありませんでした。 datetime データ型の精度は 1/300 秒で、サポートされている日付の範囲は 1753 年 1 月 1 日から始まります。SQL Server "Yukon" Beta 1 では、システムのユーザー定義型 (UDT) として実装される date、time、および utcdatetime データ型を導入して、日付と時刻のサポートが強化されています。 日付の範囲が広がり、精度が向上し、datetime 値を標準タイム ゾーンで格納できるようになりました。 新しい date データ型には 5 バイトの格納域が必要で、1 年 1 月 1 日から 9999 年 12 月 31 日までの値を 1 日の精度で格納できます。

DDL トリガ

以前のバージョンの SQL Server では、AFTER トリガを定義できる対象は、テーブルで実行された DML ステートメント (INSERT、UPDATE、および DELETE) のみでした。 Microsoft SQL Server "Yukon" Beta 1 では、サーバー、データベース、またはオブジェクト全体をスコープとして持つDDL イベントにトリガを定義できます。 CREATE_TABLE などの個別の DDL ステートメント、または "すべての DDL ステートメント" (DDL_STATEMENTS) などのステートメントのグループに、DDL トリガを定義できます。 トリガ内で、eventdata() 関数にアクセスして、トリガを起動したイベントに関するデータを取得できます。 この関数では XML 型の変数が返され、各イベントのスキーマは Server Events ベースのスキーマを継承します。。 以前のバージョンの SQL Server のトリガと同様に、DDL トリガはトリガを起動したトランザクションのコンテキストで実行されます。 トリガを起動したイベントを元に戻す場合、ROLLBACK ステートメントを実行できます。

DML イベントと通知

SQL Server "Yukon" Beta 1 では、DDL、DML、およびシステム イベントをキャプチャでき、イベント通知を Service Broker Deployment に送信できます。 トリガが同期を取って処理されるのに対して、イベント通知は非同期に利用できるイベントロギング メカニズムです。 イベント通知が、指定した Service Broker サービスに XML データを送信するので、イベント コンシューマは XML データを非同期に利用できます。 イベント コンシューマは、上記の WAITFOR 句への拡張を使用して、新しいデータが到着するのを待機できます。

フルテキスト検索の機能強化

SQL Server "Yukon" には、機能豊富なフルテキスト アプリケーションのサポートが含まれます。 カタログ機能が強化され、カタログに記録する項目をより柔軟に選択できます。 クエリ パフォーマンスおよびスケーラビリティは劇的に向上しました。 また、新しい管理ツールにより、フルテキストの実装をより深く理解できます。

セキュリティの強化

SQL Server "Yukon" には新しいセキュリティ モデルが同梱されます。このセキュリティ モデルにより、ユーザーがオブジェクトから分離され、きめ細かいアクセスが提供され、さらにデータ アクセスが管理しやすくなります。 さらに、すべてのシステム テーブルがビューとして実装されるようになったので、データベース システム オブジェクトの管理がしやすくなります。

まとめ

Microsoft SQL Server "Yukon" では、開発者が新しいクラスのデータベース アプリケーションをビルドするのに必要なツールが提供されます。 SQL Server "Yukon" は、コードの実行および格納場所の障壁を取り除き、XML などの標準を統合することにより、データベース開発者に新しい可能性の世界を開きます。 本書は、SQL Server のリリースの中できっと最も刺激的なリリースとなる、SQL Server "Yukon" でできることの、ほんの一部を紹介しています。