*
*
READY STATION トップ > READY クローズアップ
*
READY クローズアップ
*
Microsoft MVP が語る SQL Server 2005
*
SQL Server 2005 と同時出荷される Visual Studio 2005。SQL Server 2005 は、Visual Studio 2005 と統合され、Visual Studio 2005 のリッチな統合開発環境 (IDE : Integrated Development Environment) の下で、SQL Server 2005 のデータベース オブジェクトの開発からコンパイル、デバッグ、テスト、配置までを一貫して行えるようになりました。他のデータベースを圧倒する開発生産性と、データベースと連携した実践的なアプリケーションを、いかにプログラム コードを記述することなく実装できるかにご注目ください。
*
*→*Microsoft MVP とは
*
MVP スペシャル
*
*
Visual Studio 2005 統合で大きく変わる開発環境 (Page 1)
(Ready編集局 松本美穂・松本崇博)
*
*
*
*
*
*
**
Index
*
[Page 1]
*
*SQLCLR によるデータベース オブジェクトの開発、デバッグ、配置
*
*Visual Studio 2005 のサーバー エクスプローラ
*
[Page 2]
*
*Visual Studio 2005 によるデータベース アプリケーション開発
*
*[DataGridView] の利用手順
*
*今度の Visual Studio は GUI だけではない
*
[Page 3]
*
*Report コントロールによるレポート作成
*
*
*
*
*
*
*
SQLCLR による開発生産性とパフォーマンスの向上
プログラム コードをほとんど記述することなくリッチな DB アプリを構築
Report コントロールによるレポート作成。ドラッグ アンド ドロップで完成
*
SQL Server 2005 は、Visual Studio 2005 との統合および連携機能が大幅に強化され、「SQLCLR のサポート」や「サーバー エクスプローラ」「データベース連携のためのコントロール」「レポート作成を行えるコントロール」など、現場で役立つ実践的な機能がたくさん追加されています。SQL Server 2005 と Visual Studio 2005 の高度な統合によって変わるデータベース アプリケーション開発の世界を、画面ショット満載で解説します。

*
**
SQLCLR の最大のメリットは「開発生産性の向上」
使い慣れた Visual Basic や C# 言語で
ストアド プロシージャやユーザー定義関数を作成可能
*
  SQLCLR によるデータベース オブジェクトの開発、デバッグ、配置  
*
SQLCLR は、.NET Framework の CLR (Common Language Runtime : 共通言語ランタイム) を SQL Server 2005 に統合した機能です。これにより、ストアド プロシージャやユーザー定義関数、トリガ、ユーザー定義データ型といったデータベース オブジェクトを .NET Fremework 言語 (Visual Basic、C# など) で作成できるようになります。
SQLCLR の最大のメリットは、使い慣れた Visual Basic や C# でデータベース オブジェクトを開発できる点です。従来は、ストアド プロシージャやユーザー定義関数は、Transact-SQL という SQL Server 独自の拡張言語を使って開発する必要がありましたが、Transact-SQL は一般的なプログラミング言語とは異なり、文法が独特なために習得が大変でした。また、プログラミング言語としては機能が少なかったため、複雑な処理を実装するのがたいへんであったり、実装できない処理もありました。そういった場合には“拡張ストアド プロシージャ”を作成するという回避策もありましたが、拡張ストアド プロシージャは、C++ 言語を使って Open Data Services API や Win32 API といった低水準の API を駆使しなければなりませんでした。これでは開発効率があまりにも悪く、生産性が低いものでした。
一方 SQLCLR は、Visual Basic や C# で開発できるので、普段から Visual Basic や C# でアプリケーションを開発している方にとっては、特に新しい知識を覚えることなく、同じようにデータベース オブジェクトを開発できます。また、.NET Framework 2.0 で提供される豊富なクラス ライブラリも同様に利用できるので、暗号化や正規表現、配列、バイナリ操作、ファイル、ネットワーク、レジストリ アクセス、XML 操作、Web サービス利用、イベント ログ操作といった複雑な処理も簡単に実装できます。

◎SQLCLR はパフォーマンス向上もメリット
SQLCLR は、パフォーマンス上のメリットもあります。SQLCLR のデータベース オブジェクトは、SQL Server と同じプロセス内 (イン プロセス) で実行されるからです。また、複雑な処理を実行する場合は、SQLCLR のほうがパフォーマンスが良いという検証結果も挙がっています (私自身も検証しましたが、複雑な処理を何度も繰り返して呼び出すような場合は、SQLCLR のほうが断然パフォーマンスが良いという結果を得られました)。
Transact-SQL では数十行にもわたって記述しなければならないような複雑な処理が .NET であればわずか数行で記述できるようになり、かつ .NET のほうが効率良く実行できるのです。また、アプリケーションとデータベース オブジェクトを同じ言語 (Visual Basic や C#) で一貫して開発できるというのは、開発生産性の面で大きなメリットとなります。
もちろん、すべての処理において SQLCLR へ置き換えるべきというわけではなく、単純なデータ アクセスや演算処理であれば、SQLCLR よりも Transact-SQL のほうがパフォーマンスが良いので、そういった場面では従来どおり Transact-SQL を利用することをお勧めします。あくまでも Transact-SQL では実装が難しい処理や、複雑な処理を行う場合、特に何度も複雑な処理を呼び出すような場合には、SQLCLR を積極的に利用すると良いでしょう。
*
◎Visual Studio 2005 による SQLCLR 開発の流れ
ここからは、Visual Studio 2005 による SQLCLR 開発がいかに簡単かを、ユーザー定義関数を作成するときの手順を例に説明していきます。
*
1. ユーザー定義関数を作成するには、まず Visual Studio 2005 を起動して、[ファイル] メニューの [新規作成] から [プロジェクト] を選択し、新しいプロジェクトを作成します。
*
新しいプロジェクトの作成
*
新しいプロジェクトの作成 [拡大図]
*
2. [プロジェクトの種類] から利用したい言語 (Visual Basic や Visual C#) を選択して [データベース] をクリックし、[テンプレート] の一覧から [SQL Server プロジェクト] を選択します。これにより、SQLCLR のデータベース オブジェクトを作成するためのプロジェクトを作成できます。
*
3. ソリューション エクスプローラで [プロジェクト名] を右クリックして [追加] を選択します。すると、SQLCLR で作成可能なデータベース オブジェクトが一覧表示されます。
*
SQLCLR のデータベース オブジェクトの選択。ここでは [ユーザー定義関数] を選択します。
*
SQLCLR のデータベース オブジェクトの選択。ここでは [ユーザー定義関数] を選択します。 [拡大図]
*
4. ユーザー定義関数を作成するための雛形 (テンプレート) が自動生成され、任意のコードを記述できるようになります。
*
ユーザー定義関数の雛形。ファンクション名 (画面では Function1) がユーザー定義関数の名前になり、Return で戻り値を指定します。コードは、通常のアプリケーションを開発するときと同様、.NET Framework の基本クラス ライブラリを利用してさまざまな処理を記述できます。
*
ユーザー定義関数の雛形。ファンクション名 (画面では Function1) がユーザー定義関数の名前になり、Return で戻り値を指定します。コードは、通常のアプリケーションを開発するときと同様、.NET Framework の基本クラス ライブラリを利用してさまざまな処理を記述できます。 [拡大図]
*
5. 最後に [ビルド] メニューの [ <プロジェクト名> の配置] をクリックすると、コードがコンパイルされ、ユーザー定義関数が SQL Server 上のデータベース内へ配置されます。
*
コードのコンパイルと SQL Server への配置。配置されたユーザー定義関数を確認するには、[サーバー エクスプローラ] を表示して [関数] を展開します。
*
コードのコンパイルと SQL Server への配置。配置されたユーザー定義関数を確認するには、[サーバー エクスプローラ] を表示して [関数] を展開します。 [拡大図]
*
以上でユーザー定義関数の作成は完了です。Visual Studio 2005 と統合されたことにより、雛形が提供され、コンパイルや SQL Server 上への配置も GUI ベースで簡単に行えます。
*
ページのトップへページのトップへ
*
◎SQLCLR はデバッグも簡単
Visual Studio 2005 との統合で何といってもうれしいのはデバッグ機能です。SQLCLR のデータベース オブジェクトは、通常のアプリケーションを開発するときと同じようにデバッグすることができます。開発時は、コードを記述する時間よりもデバッグをしている時間の方が何倍もの時間を費やすものです。そんなとき、Visual Studio 2005 のようなリッチなデバッグ機能があれば、バグをすばやく発見でき、デバッグ時間を大幅に短縮することができます。これは本当にうれしい機能です。
SQLCLR をデバッグするには、次のように操作します。まず、[ソリューション エクスプローラ] から [Test Scripts] フォルダにある [Test.sql] という名前のテスト スクリプトを修正します。
*
テスト スクリプト「Test.sql」の修正。デバッグしたいデータベース オブジェクトの名前に変更し、必要に応じてパラメータを与えます。
*
テスト スクリプト「Test.sql」の修正。デバッグしたいデータベース オブジェクトの名前に変更し、必要に応じてパラメータを与えます。 [拡大図]
*
テスト スクリプトの修正後、次のように [デバッグ] メニューの [デバッグ開始] をクリックすると、デバッグが開始されます。
*
Visual Studio 2005 で SQLCLR のデータベース オブジェクトをデバッグしているところです。通常のアプリケーションのデバッグ時と同様、ブレーク ポイントの設定や 1 行ずつ実行するステップ イン、ステップ オーバー、マウス オーバーによる変数表示、ローカル ウィンドウでの変数確認、呼び出し履歴などを確認できます。
*
Visual Studio 2005 で SQLCLR のデータベース オブジェクトをデバッグしているところです。通常のアプリケーションのデバッグ時と同様、ブレーク ポイントの設定や 1 行ずつ実行するステップ イン、ステップ オーバー、マウス オーバーによる変数表示、ローカル ウィンドウでの変数確認、呼び出し履歴などを確認できます。 [拡大図]
*
このように SQLCLR は、Visual Studio 2005 を利用することで、開発、デバッグおよび配置が簡単に行えます。また、使い慣れた Visual Basic や C# で開発でき、かつデバッグ機能も提供されることによる「開発生産性の高さ」が SQLCLR の最大のメリットです。
*
ページのトップへページのトップへ
*
**
Visual Studio 2005 のサーバー エクスプローラで
SQL Server 2005 上にテーブルや DB ダイアグラムを作成、クエリの実行
*
  Visual Studio 2005 のサーバー エクスプローラ  
*
Visual Studio 2005 には、サーバー エクスプローラと呼ばれる SQL Server 2005 との連携機能があります。これは、SQL Server 2005 上のテーブルやデータベース ダイアグラム、制約、インデックス、ビュー、ストアド プロシージャといったさまざまなデータベース オブジェクトをグラフィカルに作成、編集できる機能です。
次の画面は、サーバー エクスプローラでデータベース ダイアグラムを作成および編集しているところです。
*
データベース ダイアグラムの編集。テーブル間のリレーションシップやテーブルの列名、データ型をグラフィカルに表示したり、列の追加と削除、インデックスや制約の追加と削除をしたりすることもできます。
*
データベース ダイアグラムの編集。テーブル間のリレーションシップやテーブルの列名、データ型をグラフィカルに表示したり、列の追加と削除、インデックスや制約の追加と削除をしたりすることもできます。 [拡大図]
*
サーバー エクスプローラは、クエリ デザイナによってグラフィカルにクエリ (SQL ステートメント) を実行したり、ビューを作成したりすることもできます。次の画面は、[商品] テーブルと [商品区分] テーブルを結合した結果を返すビューを作成しているところです。
*
クエリ デザイナでグラフィカルにビューを作成している画面
*
クエリ デザイナでグラフィカルにビューを作成している画面 [拡大図]
*
また、サーバー エクスプローラは、Transact-SQL ベースのストアド プロシージャやユーザー定義関数を作成する機能も備わっています。しかも、デバッグ機能も備わっているので、ブレーク ポイントを設定してステップ実行したり、実行中の変数を確認したりすることもできます。次の画面は、ストアド プロシージャをデバッグしているところです。
*
Transact-SQL で記述されたストアド プロシージャをデバッグしている画面
*
Transact-SQL で記述されたストアド プロシージャをデバッグしている画面 [拡大図]
*
このように Visual Studio 2005 に搭載されたサーバー エクスプローラを利用することで、SQL Server 2005 上のさまざまなオブジェクトをグラフィカルに編集することができます。特にデータベース ダイアグラムや Transact-SQL ストアド プロシージャのデバッグ機能は大変便利なので、ぜひ活用していただければと思います。
なお、サーバー エクスプローラは、従来の Visual Studio から提供されている機能ですが、1 つ前のバージョンである Visual Studio .NET 2003 では、SQL Server 2005 には対応していないため、一部の機能が利用できなかったり、SQL Server 2005 からの新機能は利用できませんのでご注意ください。
*
ページのトップへページのトップへ
*
READY STATION のトップへREADY STATION のトップへ
*
*1 of 3次へ