READY STATION トップ > READY クローズアップ ![]()
|
|
Visual Studio 2005 統合で大きく変わる開発環境 (Page 1) (Ready編集局 松本美穂・松本崇博)
SQL Server 2005 は、Visual Studio 2005 との統合および連携機能が大幅に強化され、「SQLCLR のサポート」や「サーバー エクスプローラ」「データベース連携のためのコントロール」「レポート作成を行えるコントロール」など、現場で役立つ実践的な機能がたくさん追加されています。SQL Server 2005 と Visual Studio 2005 の高度な統合によって変わるデータベース アプリケーション開発の世界を、画面ショット満載で解説します。
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 開発がいかに簡単かを、ユーザー定義関数を作成するときの手順を例に説明していきます。
![]()
![]()
![]()
![]()
以上でユーザー定義関数の作成は完了です。Visual Studio 2005 と統合されたことにより、雛形が提供され、コンパイルや SQL Server 上への配置も GUI ベースで簡単に行えます。 ◎SQLCLR はデバッグも簡単 Visual Studio 2005 との統合で何といってもうれしいのはデバッグ機能です。SQLCLR のデータベース オブジェクトは、通常のアプリケーションを開発するときと同じようにデバッグすることができます。開発時は、コードを記述する時間よりもデバッグをしている時間の方が何倍もの時間を費やすものです。そんなとき、Visual Studio 2005 のようなリッチなデバッグ機能があれば、バグをすばやく発見でき、デバッグ時間を大幅に短縮することができます。これは本当にうれしい機能です。 SQLCLR をデバッグするには、次のように操作します。まず、[ソリューション エクスプローラ] から [Test Scripts] フォルダにある [Test.sql] という名前のテスト スクリプトを修正します。
テスト スクリプトの修正後、次のように [デバッグ] メニューの [デバッグ開始] をクリックすると、デバッグが開始されます。
このように SQLCLR は、Visual Studio 2005 を利用することで、開発、デバッグおよび配置が簡単に行えます。また、使い慣れた Visual Basic や C# で開発でき、かつデバッグ機能も提供されることによる「開発生産性の高さ」が SQLCLR の最大のメリットです。
Visual Studio 2005 には、サーバー エクスプローラと呼ばれる SQL Server 2005 との連携機能があります。これは、SQL Server 2005 上のテーブルやデータベース ダイアグラム、制約、インデックス、ビュー、ストアド プロシージャといったさまざまなデータベース オブジェクトをグラフィカルに作成、編集できる機能です。 次の画面は、サーバー エクスプローラでデータベース ダイアグラムを作成および編集しているところです。
サーバー エクスプローラは、クエリ デザイナによってグラフィカルにクエリ (SQL ステートメント) を実行したり、ビューを作成したりすることもできます。次の画面は、[商品] テーブルと [商品区分] テーブルを結合した結果を返すビューを作成しているところです。
また、サーバー エクスプローラは、Transact-SQL ベースのストアド プロシージャやユーザー定義関数を作成する機能も備わっています。しかも、デバッグ機能も備わっているので、ブレーク ポイントを設定してステップ実行したり、実行中の変数を確認したりすることもできます。次の画面は、ストアド プロシージャをデバッグしているところです。
このように Visual Studio 2005 に搭載されたサーバー エクスプローラを利用することで、SQL Server 2005 上のさまざまなオブジェクトをグラフィカルに編集することができます。特にデータベース ダイアグラムや Transact-SQL ストアド プロシージャのデバッグ機能は大変便利なので、ぜひ活用していただければと思います。 なお、サーバー エクスプローラは、従来の Visual Studio から提供されている機能ですが、1 つ前のバージョンである Visual Studio .NET 2003 では、SQL Server 2005 には対応していないため、一部の機能が利用できなかったり、SQL Server 2005 からの新機能は利用できませんのでご注意ください。 |