SQL Serverのテーブル名が「dbo」で始まるのはなぜですか?


回答:


234

dboはSQL Serverのデフォルトのスキーマです。独自のスキーマを作成して、オブジェクトの名前空間をより適切に管理できます。


22
ベストプラクティスとして、私は常に「dbo」を追加します。プレフィックスは必要ありませんが。ほとんどの場合、SQLでは明示的にすることをお勧めします。
SurroundedByFish

3
@SurroundedByFish:おそらくベストプラクティスではありませんが、SQLの専門家ではないため、私は間違っている可能性があります。 stackoverflow.com/a/769639/602245
Brett

13
この記事から別の回答、それが実際にはベストプラクティスであることを主張:「コードがそうすることでわずかなパフォーマンスの向上があるとベストプラクティスと考えられているものの、完全修飾名を使用する必要はありません。」
カール・G

7
また、あなたがリンクした回答も「dbo」を含めることをお勧めします。オプティマイザがスキーマを検索する必要がないようにします。
Carl G

7
dboは良い習慣ではありません。独自のスキーマを作成し、常にそれを使用してください。dboは移行のトリックにすぎないため、SQL Server 2005より前のバージョンは引き続き機能します。はい、常にperfのスキーマを使用します。いいえ、移行用ではありません(dboなど)。
David Betz 2015年

85

Sql Server Management Studioを使用している場合は、[データベース]-[データベース]-[セキュリティ]-[スキーマ]を参照して、独自のスキーマを作成できます。

スクリプトを使用して作成するのは(たとえば)と同じくらい簡単です。

CREATE SCHEMA [EnterSchemaNameHere] AUTHORIZATION [dbo]

これらを使用して、たとえば「財務」情報用のスキーマと「個人」データ用のスキーマを作成することにより、テーブルを論理的にグループ化できます。テーブルは次のように表示されます。

Financial.BankAccounts Financial.Transactions Personal.Address

dboのデフォルトスキーマを使用するのではなく。


エンティティフレームワークを使用するときに問題が発生するかどうかをご存知ですか?
batmaci 2013年

6
あなたのような場合は、最初にもコードで: -あなたは、Entity Frameworkを使用してスキーマを使用することができます[Table("Customer", Schema = "MySchema")]
フェントン

'AUTHORIZATION [dbo]'はスキーマに対してdboと同じ権限を付与しますか、それともユーザーに権限を付与する必要がありますか?
マークミカレフ2014

21

これはSQL 2005の新機能であり、特にその「グループ」内のオブジェクトを保護する目的で、オブジェクトをグループ化する簡単な方法を提供します。

次のリンクは、それが何であるか、なぜそれを使用するのかについての詳細な説明を提供します。

SQL Serverの所有者とスキーマの違いについて

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.