web-dev-qa-db-ja.com

SQL Server:dbo対db_ownerロールメンバー?

ユーザーを新しいデータベースに割り当てています。ログインをdb_ownerロールメンバーとして割り当てるのと比較して、ユーザーがデフォルトのdboユーザーであることの違いは何ですか?

7
nickel

すべてのデータベースには、デフォルトでdb_ownerデータベースロールに割り当てられているdboユーザーが必要です。 dboスキーマもあり、これは部分的にSQL Server 2000以前からのホールドオーバーであり、ユーザーとスキーマは同じものでした。また、クエリがdboスキーマ内のオブジェクトをユーザーのデフォルトスキーマにない場合に検索するという点でも少し特殊です(オブジェクト名がスキーマ名で修飾されていないと想定)。

データベース内のdboユーザーにマッピングできるのは1つのログインだけです(データベースユーザーの場合と同様)。ただし、db_ownerロールに必要な数のユーザーを割り当てて、基本的にデータベースを完全に制御できます。

データベースユーザーのデフォルトスキーマを設定しても、セキュリティの点で効果はありません。オブジェクト名に特定のスキーマ名が指定されていない場合、オブジェクトの作成と参照にデフォルトで使用されるスキーマを制御するだけです。 SQL Server 2000以前では、ユーザーとスキーマが分離されていなかったため、特に明記されていない限り、ユーザーのデフォルトスキーマは常にそれ自体でした。 「CREATE TABLE dbo.test_table ...」対「CREATE TABLE test_table ...」。 (dboスキーマは、ユーザーのデフォルトスキーマにないオブジェクトには引き続き使用されていました。)

8
db2

デフォルトのdboユーザーは、データベースオブジェクトを表示できません。db_ownerは、データベースのすべての構成およびメンテナンスアクティビティを実行できます。

0
renu