2011-01-28 17 views
10

私は非常に混乱するように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というスキーマに割り当てるのですか?

答えて

12

あなたはこれを読んで起動する場合があります以降のSQL Server 2005年からWhat good are SQL Server schemas?

は、スキーマはユーザーhttp://msdn.microsoft.com/en-us/library/ms190387.aspxから分離しました。

以前は、各ユーザーが複数のテーブルを所有しており、それらのテーブルは「スペース」にあります。その "スペース"はスキーマになりました。これはテーブルをグループ化する方法です。

SQL Serverオブジェクトは、その名前に4部

  • server.database.schemaを持っています。ObjectNameの

あなたがそれらの1つ以上、あなたは右からそれを命名している

  • database.schema.objectname省略するたびに - 暗黙の現在のサーバー
  • schema.objectname - 暗黙の現在のデータベース
  • objectname - 暗黙のデフォルトスキーマ。各ユーザーにデフォルトのスキーマを割り当てることができますが、デフォルトではこれは「dbo」になります。

「dbo」は特別なスキーマです。データベース所有者です。すべてのデータベースに存在しますが、スキーマ(フォルダなど)をデータベースに追加することができます

SQL Server 2000 dbsの以前のインストールから2005年以降に移行する場合は、スキーマ名をユーザーにして、ユーザがテーブルを所有しているためです。

関連する問題