| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「SQL Server スキーマ」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
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]] =====
*各ユーザーに既定のスキーマを割り当てることができます。(CREATE USER、ALTER USER の DEFAULT_SCHEMA オプション)
+
*各ユーザーに既定のスキーマを割り当てることができます。(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
*INFORMATION_SCHEMA
+
*INFO[[R]]MATION_SCHEMA
  
 
===dbo スキーマ===
 
===dbo スキーマ===
 
*新しく作成されたデータベースに使用される既定のスキーマ
 
*新しく作成されたデータベースに使用される既定のスキーマ
 
*dbo スキーマは、dbo ユーザー アカウントによって所有
 
*dbo スキーマは、dbo ユーザー アカウントによって所有
*CREATE USER で作成されたユーザーには、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>