EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

第3回 Denaliの新機能「Contained Databases」の全貌(前編)

edited by DB Online   2011/07/20 07:00

はじめまして。平山に代わり今回から記事を担当する日本マイクロソフトPremier Field Engineering部の古賀です。Denaliの新機能をいくつかピックアップし、掘り下げた形で紹介していきます。今回、数あるDenaliの新機能の中から最初に取り上げる機能はContained Databaseです。 

Contained Databaseとは

 Contained Databaseとは、その名の通り「含む」ことのできるデータベースです。「含む」という意味についての詳細については後述しますが、Contained Databaseとして作成したデータベースには、従来SQL Serverインスタンス レベルで管理されていたような情報、例えばログイン情報や照合順序の設定などを「含む」ことができます。つまり、Contained Databaseを使用すると、SQL Serverインスタンスの設定や機能に依存しないデータベースを作成できるようになるのです。

 Contained Databaseによる SQL Serverインスタンスとデータベース間の依存関係の分離は、アプリケーション開発者とデータベース管理者 (SQL Serverインスタンスの管理者) 双方に対してメリットをもたらします。アプリケーション開発者は、開発で使用しているデータベースがどのような環境の SQL Serverインスタンスで動作するかを意識せずに開発できますし、データベース管理者は、SQL Serverインスタンスの設定を意識することなく、データベースを容易に別のサーバーへ移動できます。

ユーザー データベースの依存関係

 通常 SQL Serverインスタンス上にあるユーザーデータベースは、少なくとも 1 つ以上のデータベースと依存関係があります。例えばデータベースを使用する為にはユーザーが必要ですが、ユーザーはログイン情報と紐づいている必要があります。ログイン情報はmasterシステムデータベースに保存されているため、この時点でユーザーデータベースとmasterシステム データベースとの間には依存関係が生じます。照合順序やリンク サーバー定義などもこうした依存関係の一つです。また、msdbシステムデータベースにはSQL Server Agentジョブに関する情報やレプリケーションに関する情報が保存されていますし、場合によっては、別のユーザーデータベースに対しても依存関係を持つ可能性もあるでしょう。

 このような依存関係があると、ユーザーデータベースを別の SQL Serverインスタンスへ移動させたいと思っても、単純にユーザーデータベースをコピー、あるいはリストアしただけでは動作しない可能性が出てきます。別のSQL Serverインスタンスでデータベースを正しく動作させるためには、移動先のmasterデータベースの設定など、インスタンスレベルの情報を意識しないといけないのです。Contained Databaseは、このようなユーザーデータベースとSQL Serverインスタンス間の依存関係によって発生する問題を解決してくれます。

※この続きは、会員の方のみお読みいただけます(登録無料)。


※この続きは、会員の方のみお読みいただけます(登録無料)。


著者プロフィール

バックナンバー

連載:あたらしいSQL Server/Denaliの世界

もっと読む

All contents copyright © 2007-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5