SQL Server 2005 CTPレビュー(開発者編) Page 1/3

SQL CLR vs. Transact-SQLの真実


株式会社システムインテグレータ
石橋 潤一
2005/9/6
本連載は全3回にわたり、2005年11月にリリースされるSQL Server 2005のレビューをお届けする。5年ぶりとなるメジャーバージョンアップであり、搭載される新機能は多岐にわたるが、ここでは「開発者」「データベース管理者」「エンドユーザー企業のITマネージャ」という3者の立場から、導入に当たってどんなメリットや注意点があるかを解説していく。(編集局)
主な内容
--Page 1--
SQL CLRが開発者に与えるインパクト
--Page 2--
SQL CLRでコーディングはどう変わるか
--Page 3--
Transact-SQLか? SQL CLRか? パフォーマンスで勝負!

 2005年11月、マイクロソフト社のRDBMSであるSQL Serverは大きな転換点を迎えようとしています。1994年に出荷された4.2、1999年の7.0、2000年の2000を経て、約5年ぶりとなるメジャーバージョンアップ、SQL Server 2005がリリースされます。

 11年にわたる歴史を経て、新たにリリースされるSQL Server 2005では共通言語ランタイム(CLR:Common Language Runtime)の統合やBI(Business Intelligence)の強化など、実に多くの機能が実装されています。しかしながら、企業の根幹を支え、信頼性と安定性が何より求められるデータベース製品だけに、まだまだ様子見という開発者も多いでしょう。そこで、本連載では実際のところSQL Server 2005はどんなもんだ? という問いに答え、「開発者」「データベース管理者(DBA)」「エンドユーザー企業のITマネージャ」それぞれの視点から3回に分けてSQL Server 2005のレビューをお送りします。今回は開発者編ということで、新機能のメイントピックともいえるSQL CLRの解説とレビューを行います。

本記事は執筆時点(2005年8月)に入手可能な最新プレビュー版「SQL Server June 2005 CTP(Community Technology Preview)日本語版」に基づいて執筆しています。記事の内容は製品版とは異なる部分もあることを明記しておきます。

SQL CLRが開発者に与えるインパクト

 冒頭で触れたとおり、SQL Server 2005には共通言語ランタイム(CLR:Common Language Runtime)が実装されています。CLRとは、Javaの仮想マシンのようにプラットフォーム間の違いを吸収し、さらにさまざまなクラスライブラリなどのサービスを提供する、.NETの根幹をなすフレームワークです。.NET Frameworkの登場以来、CLRを中心とした開発環境が着々と整いつつありますが、ストアドプロシージャの開発でもこれらの技術を利用可能とするために生まれたのがSQL CLRです。

 SQL Serverにおいて、これまではTransact-SQL言語を用いてストアドプロシージャの開発を行ってきましたが、開発環境が貧弱であったり言語仕様として限界があるなど、必ずしも万能な言語ではありませんでした。そこでマイクロソフト社が打ち出したのがSQL CLRです。CLRの実装により、従来のTransact-SQL言語に代わって、おなじみC#やVisual Basic .NETなどの.NET Framework上でコンパイル可能な言語を用いてデータベース・プログラミングを行うことが可能となります。C#やVisual Basic .NETなどの言語を利用できるということは、.NET Frameworkの強力なライブラリ群を利用することが可能となるのはもちろんのこと、これらの言語に実装された配列や名前空間、例外処理や構造体などを用いて、従来のTransact-SQLでは難しかった処理を実装することも可能です。さらに、ネットワークやレジストリなど外部への接続も可能となり、データベース・プログラミングの可能性を大きく広げる言語仕様となっています。

 多様な可能性を秘めた言語を用いる場合、その負の面としてセキュリティに対する配慮が必要となります。データベース領域を超えてプログラムがアクセスすることが可能となったSQL CLRはセキュリティに関する機能も実装されています。SQL CLRが利用可能な範囲を制限する仕組みは「アクセス許可のレベル」と呼ばれます。これは「セーフ」「外部」「アンセーフ」の3つからなり、目的に合わせて設定します。各許可レベルの権限範囲は次のとおりです。

許可レベル 説明
セーフ 最も制限されたアクセス許可。ファイル、ネットワーク、レジストリなど外部リソースへのアクセスはできません
外部 セーフで許可された範囲に加え、ファイルやディレクトリへの読み取り/書き込み、ネットワーク、イベントログ、レジストリなどへのアクセスを認めます
アンセーフ 外部に加え、SQL CLRからアンマネージドコード(C++のコードなど)の呼び出しを認めます
表1 SQL Server 2005に搭載予定のアクセス許可のレベル

 既定では、セーフの許可レベルが設定され、推奨されるのもセーフです。アクセス許可のレベルを設定する際は入念に検討を行う必要があるでしょう。(次ページへ続く)

  1/3

 Index
連載:SQL Server 2005 CTPレビュー(開発者編)
SQL CLR vs. Transact-SQLの真実
Page 1
・SQL CLRが開発者に与えるインパクト
  Page 2
・SQL CLRでコーディングはどう変わるか
  Page 3
・Transact-SQLか? SQL CLRか? パフォーマンスで勝負!


SQL Server 2005 CTPレビュー


Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Database Expert 記事ランキング

本日月間