==[[SQL Server スキーマ]]==
[[SQL Server]] | [[SQL Server 2005]] |
*http://msdn.microsoft.com/ja-jp/library/ms190387([[SQL]].90).aspx
==ユーザーとスキーマの分離==
*データベース スキーマは、データベース ユーザーとは別の、独立した名前空間
*[[SQL Server 2005 ]] からは、各オブジェクトがデータベース スキーマに属する
*スキーマはオブジェクトのコンテナ
*データベース内で作成したり変更することができる
*ユーザーにはスキーマに対するアクセス権を与えることができる
<blockquote>[[SQL Server 2005 ]] より前は、データベース ユーザーとデータベース スキーマは概念的に同じオブジェクトだった</blockquote>
===重要な変化===
*保護可能なリソースの権限を、より厳密に管理
===既定のスキーマ===
=====[[SQL Server ]] 2000=====
*リソースの名前が完全修飾されていない場合、これを解決するため名前解決が使用される
*呼び出し側のデータベース ユーザーが所有するスキーマと dbo が所有するスキーマが照合される
=====[[SQL Server 2005 ]] =====*各ユーザーに既定のスキーマを割り当てることができます。(CREATE USER、ALTER USER C[[R]]EATE USE[[R]]、ALTE[[R]] USE[[R]] の DEFAULT_SCHEMA オプション)
*DEFAULT_SCHEMA が定義されていない場合、dbo スキーマが既定のスキーマと見なされます。
<blockquote>[[Windows ]] 認証されたグループ経由で接続するユーザーには、既定のスキーマが関連付けられません。スキーマを持たないユーザーがオブジェクトを作成すると、新しいスキーマが作成されます。名前は現在のユーザー名に設定されます。</blockquote>
==組み込みスキーマ==
*guest
*sys
*INFORMATION_SCHEMAINFO[[R]]MATION_SCHEMA
===dbo スキーマ===
*新しく作成されたデータベースに使用される既定のスキーマ
*dbo スキーマは、dbo ユーザー アカウントによって所有
*CREATE USER C[[R]]EATE USE[[R]] で作成されたユーザーには、dbo が既定のスキーマとして割り当てられます。
<blockquote>dbo スキーマが割り当てられたユーザーは、dbo ユーザー アカウントの権限を継承しません。 スキーマの権限はユーザーによって継承されるのではなく、そのスキーマに含まれたデータベース オブジェクトによって継承されます。</blockquote>