「SQL Server スキーマ」の版間の差分
ナビゲーションに移動
検索に移動
(同じ利用者による、間の1版が非表示) | |||
1行目: | 1行目: | ||
− | ==SQL Server スキーマ== | + | ==[[SQL Server スキーマ]]== |
− | [[SQL Server]][[SQL Server 2005]] | + | [[SQL Server]] | [[SQL Server 2005]] | |
− | *http://msdn.microsoft.com/ja-jp/library/ms190387(SQL.90).aspx | + | *http://msdn.microsoft.com/ja-jp/library/ms190387([[SQL]].90).aspx |
==ユーザーとスキーマの分離== | ==ユーザーとスキーマの分離== | ||
*データベース スキーマは、データベース ユーザーとは別の、独立した名前空間 | *データベース スキーマは、データベース ユーザーとは別の、独立した名前空間 | ||
− | *SQL Server 2005 からは、各オブジェクトがデータベース スキーマに属する | + | *[[SQL Server 2005]] からは、各オブジェクトがデータベース スキーマに属する |
*スキーマはオブジェクトのコンテナ | *スキーマはオブジェクトのコンテナ | ||
*データベース内で作成したり変更することができる | *データベース内で作成したり変更することができる | ||
*ユーザーにはスキーマに対するアクセス権を与えることができる | *ユーザーにはスキーマに対するアクセス権を与えることができる | ||
− | <blockquote>SQL Server 2005 より前は、データベース ユーザーとデータベース スキーマは概念的に同じオブジェクトだった</blockquote> | + | <blockquote>[[SQL Server 2005]] より前は、データベース ユーザーとデータベース スキーマは概念的に同じオブジェクトだった</blockquote> |
===重要な変化=== | ===重要な変化=== | ||
*保護可能なリソースの権限を、より厳密に管理 | *保護可能なリソースの権限を、より厳密に管理 | ||
26行目: | 26行目: | ||
===既定のスキーマ=== | ===既定のスキーマ=== | ||
− | =====SQL Server 2000===== | + | =====[[SQL Server]] 2000===== |
*リソースの名前が完全修飾されていない場合、これを解決するため名前解決が使用される | *リソースの名前が完全修飾されていない場合、これを解決するため名前解決が使用される | ||
*呼び出し側のデータベース ユーザーが所有するスキーマと dbo が所有するスキーマが照合される | *呼び出し側のデータベース ユーザーが所有するスキーマと dbo が所有するスキーマが照合される | ||
− | =====SQL Server 2005 ===== | + | =====[[SQL Server 2005]] ===== |
− | *各ユーザーに既定のスキーマを割り当てることができます。( | + | *各ユーザーに既定のスキーマを割り当てることができます。(C[[R]]EATE USE[[R]]、ALTE[[R]] USE[[R]] の DEFAULT_SCHEMA オプション) |
*DEFAULT_SCHEMA が定義されていない場合、dbo スキーマが既定のスキーマと見なされます。 | *DEFAULT_SCHEMA が定義されていない場合、dbo スキーマが既定のスキーマと見なされます。 | ||
− | <blockquote>Windows 認証されたグループ経由で接続するユーザーには、既定のスキーマが関連付けられません。スキーマを持たないユーザーがオブジェクトを作成すると、新しいスキーマが作成されます。名前は現在のユーザー名に設定されます。</blockquote> | + | <blockquote>[[Windows]] 認証されたグループ経由で接続するユーザーには、既定のスキーマが関連付けられません。スキーマを持たないユーザーがオブジェクトを作成すると、新しいスキーマが作成されます。名前は現在のユーザー名に設定されます。</blockquote> |
==組み込みスキーマ== | ==組み込みスキーマ== | ||
43行目: | 43行目: | ||
*guest | *guest | ||
*sys | *sys | ||
− | * | + | *INFO[[R]]MATION_SCHEMA |
===dbo スキーマ=== | ===dbo スキーマ=== | ||
*新しく作成されたデータベースに使用される既定のスキーマ | *新しく作成されたデータベースに使用される既定のスキーマ | ||
*dbo スキーマは、dbo ユーザー アカウントによって所有 | *dbo スキーマは、dbo ユーザー アカウントによって所有 | ||
− | * | + | *C[[R]]EATE USE[[R]] で作成されたユーザーには、dbo が既定のスキーマとして割り当てられます。 |
<blockquote>dbo スキーマが割り当てられたユーザーは、dbo ユーザー アカウントの権限を継承しません。 スキーマの権限はユーザーによって継承されるのではなく、そのスキーマに含まれたデータベース オブジェクトによって継承されます。</blockquote> | <blockquote>dbo スキーマが割り当てられたユーザーは、dbo ユーザー アカウントの権限を継承しません。 スキーマの権限はユーザーによって継承されるのではなく、そのスキーマに含まれたデータベース オブジェクトによって継承されます。</blockquote> |
2020年2月16日 (日) 04:32時点における最新版
目次
SQL Server スキーマ
SQL Server | SQL Server 2005 |
ユーザーとスキーマの分離
- データベース スキーマは、データベース ユーザーとは別の、独立した名前空間
- SQL Server 2005 からは、各オブジェクトがデータベース スキーマに属する
- スキーマはオブジェクトのコンテナ
- データベース内で作成したり変更することができる
- ユーザーにはスキーマに対するアクセス権を与えることができる
<blockquote>SQL Server 2005 より前は、データベース ユーザーとデータベース スキーマは概念的に同じオブジェクトだった</blockquote>
重要な変化
- 保護可能なリソースの権限を、より厳密に管理
- スキーマとスキーマ スコープのセキュリティ保護可能なリソースの所有権を譲渡
- スキーマ間でオブジェクトを移動
- 1 つのスキーマに複数のデータベース ユーザーが所有するオブジェクトを含めることができます
- 複数のデータベース ユーザーが 1 つの既定のスキーマを共有できます。
- どのデータベース プリンシパルでも、1 つのスキーマを所有できます。
- 対応するスキーマ内のオブジェクトを削除しなくても、データベース ユーザーを削除できます。
既定のスキーマ
SQL Server 2000
- リソースの名前が完全修飾されていない場合、これを解決するため名前解決が使用される
- 呼び出し側のデータベース ユーザーが所有するスキーマと dbo が所有するスキーマが照合される
SQL Server 2005
- 各ユーザーに既定のスキーマを割り当てることができます。(CREATE USER、ALTER USER の DEFAULT_SCHEMA オプション)
- DEFAULT_SCHEMA が定義されていない場合、dbo スキーマが既定のスキーマと見なされます。
<blockquote>Windows 認証されたグループ経由で接続するユーザーには、既定のスキーマが関連付けられません。スキーマを持たないユーザーがオブジェクトを作成すると、新しいスキーマが作成されます。名前は現在のユーザー名に設定されます。</blockquote>
組み込みスキーマ
- 組み込みのデータベース ユーザーおよびロールと同じ名前を持った 10 個の定義済みスキーマが付属しています。
- 主に下位互換性を確保するために存在します。
- 固定データベース ロールと同じ名前のスキーマは、不要であれば削除してもかまいません。
次のスキーマを削除することはできません。
- dbo
- guest
- sys
- INFORMATION_SCHEMA
dbo スキーマ
- 新しく作成されたデータベースに使用される既定のスキーマ
- dbo スキーマは、dbo ユーザー アカウントによって所有
- CREATE USER で作成されたユーザーには、dbo が既定のスキーマとして割り当てられます。
<blockquote>dbo スキーマが割り当てられたユーザーは、dbo ユーザー アカウントの権限を継承しません。 スキーマの権限はユーザーによって継承されるのではなく、そのスキーマに含まれたデータベース オブジェクトによって継承されます。</blockquote>
© 2006 矢木浩人