私は非常に混乱するようにSQL Serverスキーマを見つけました。たぶんあなたたちは混乱を解消するのに役立つかもしれません。私はSQL Server 2008 ExpressとMS SQL Server 2008 Management Studioを使用していますが、私の質問はMS SQL Server 2008バージョンに関係していると思います。私はさまざまなデータベースと異なるサーバー上のSQL Serverの異なるインスタンスを試してきました。たとえば、私は自社サーバー上でいくつかの作業を行ってきましたが、共有Webホスティングサーバー上の一部のデータベースでもかなり作業しています。これは私が混乱の一部に入った理由の一部かもしれません。dboスキーマで名前が付けられたSQL Serverテーブル
1)このスキーマ名の由来はどこですか?私は数週間前にSQL Serverを使い始めたときに、テーブル名にスキーマ名が追加されていないと考えました。私は、データベースがインポートされたとき、またはMS Access Migration Assistantを使用したときに、それらを見始めました。スキーマをまったく使用しないことは可能ですか?状況によっては表示されませんか?
2)「dbo」ではないスキーマ名?最近のプロジェクトでは、私のスキーマがdbo.tablenameの代わりにMyLongUserName.tablenameとして表示されていました。私は時々ユーザーアカウントがdboスキーマにデフォルト設定されているように見えて、それがユーザーアカウントと同じ名前のスキーマに割り当てられていることが混乱しています。これは、NT認証とSQL Server認証を使用してログインすることと関係がありますか?
3)dboという名前のユーザーですか?現在作業しているデータベースにdboという名前のユーザーを作成するのは覚えていませんが、ユーザーの一覧に表示されます。スキーマ「dbo」が存在するためには、ユーザーアカウント「dbo」が存在する必要がありますか?ユーザー名とスキーマ名は常に並行ですか?
4)スキーマを使用するかどうか - 使用できませんか?基本的なWebサイトの2つまたは3つのテーブルデータベースのような小さなプロジェクトにスキーマを使用していますか?スキーマの使用を完全に避けることができますか、デフォルトの "dbo"スキーマだけを使用することはできますか?非常に小さなプロジェクトでも、追加のスキーマを作成して特定の権限とユーザーアカウントを割り当てますか?
私はこの書籍をMurachのSQL Server 2008開発者向けと使いましたが、私の混乱を解消するのにはあまり役に立たないことがわかりました。私は次のような文章を読んでいます:"オブジェクトを作成するときにスキーマを指定しないと、それらはデフォルトスキーマに格納されます。"待ち時間、「デフォルトのスキーマ」がどのように分かっていますか?ユーザーアカウントのデフォルトスキーマについて話しているのですか、すべてのデータベースに「デフォルトスキーマ」がありますか?それはいつも "dbo"ですか?なぜオブジェクトを作成するときに、「dbo」ではなくMyLongUserNameというスキーマに割り当てるのですか?