395 Stimmen

Warum beginnen die Tabellennamen in SQL Server mit "dbo"?

Zumindest auf meiner lokalen Instanz, wenn ich Tabellen erstelle, werden sie alle mit "dbo." eingeleitet. Warum ist das so?

307voto

Daniel Punkte 4637

Dbo ist das Standardschema in SQL Server. Sie können Ihre eigenen Schemata erstellen, um Ihren Objektnamensraum besser verwalten zu können.

108voto

Fenton Punkte 221749

Wenn Sie Sql Server Management Studio verwenden, können Sie Ihr eigenes Schema erstellen, indem Sie zu Datenbanken - Ihre Datenbank - Sicherheit - Schemata gehen.

Die Erstellung eines Skripts ist so einfach wie (zum Beispiel):

CREATE SCHEMA [EnterSchemaNameHere] AUTHORIZATION [dbo]

Sie können sie verwenden, um Ihre Tabellen logisch zu gruppieren, indem Sie z. B. ein Schema für "Finanzdaten" und ein anderes für "persönliche Daten" erstellen. Ihre Tabellen würden dann wie folgt angezeigt:

Financial.BankAccounts Finanzielle.Transaktionen Personal.Adresse

Anstatt das Standardschema von dbo.

36voto

Manngo Punkte 10358

Microsoft führte ein Schema in der Version 2005. Für diejenigen, die sich mit Schemata nicht auskannten oder denen es egal war, wurden die Objekte in ein Standardschema eingefügt dbo .

dbo steht für DataBase Owner, aber das ist nicht wirklich wichtig.

Stellen Sie sich ein Schema wie einen Ordner für Dateien vor:

  • Sie brauchen sich nicht auf das Schema zu beziehen, wenn das Objekt im gleichen oder im Standardschema enthalten ist.
  • Sie können auf ein Objekt in einem anderen Schema verweisen, indem Sie das Schema als Präfix verwenden, so wie Sie auf eine Datei in einem anderen Ordner verweisen können.
  • Sie können nicht zwei Objekte mit demselben Namen in einem einzigen Schema haben, wohl aber in verschiedenen Schemata
  • Die Verwendung eines Schemas kann Ihnen helfen, eine größere Anzahl von Objekten zu organisieren
  • Schemata können auch bestimmten Benutzern und Rollen zugewiesen werden, so dass Sie den Zugriff darauf steuern können, wer was tun kann.

Sie können generell auf jedes Objekt aus jedem Schema zugreifen. Es ist jedoch möglich, zu steuern, welche Benutzer welchen Zugriff auf bestimmte Schemata haben, so dass Sie Schemata in Ihrem Sicherheitsmodell verwenden können.

Denn dbo die Standardeinstellung ist, müssen Sie sie normalerweise innerhalb einer einzelnen Datenbank nicht angeben:

SELECT * FROM customers;
SELECT * FROM dbo.customers;

das Gleiche bedeuten.

Ich bin nicht einverstanden mit der Idee, immer die dbo. Vorwahl, denn je mehr Sie Ihren Code mit unnötigen Details überladen, desto schwieriger ist er zu lesen und zu verwalten.

Im Großen und Ganzen können Sie das Schema ignorieren. Das Schema wird jedoch in den folgenden Situationen sichtbar:

  1. Wenn Sie die Tabellen entweder im Objektnavigator oder in einer externen Anwendung wie Microsoft Excel oder Access anzeigen, sehen Sie die dbo. Präfix. Sie können es trotzdem ignorieren.

  2. Wenn Sie auf eine Tabelle in einer anderen Datenbank verweisen, benötigen Sie ihren vollständigen Namen in der Form database.schema.table :

    SELECT * FROM bookshop.dbo.customers;
  3. Wenn Sie aus historischen Gründen eine benutzerdefinierte skalare Funktion schreiben, müssen Sie sie mit dem Schema-Präfix aufrufen:

    CREATE FUNCTION tax(@amount DECIMAL(6,2) RETURNS DECIMAL(6,2) AS
    BEGIN
        RETURN @amount * 0.1;
    END;
    GO
    SELECT total, dbo.tax(total) FROM pricelist;

    Dies gilt nicht für andere Objekte, wie Tabellenfunktionen, Prozeduren und Ansichten.

Sie können Schemata verwenden, um Benennungskonflikte zu vermeiden. Wenn zum Beispiel jeder Benutzer ein persönliches Schema hat, kann er zusätzliche Objekte erstellen, ohne sich mit anderen Benutzern um den Namen streiten zu müssen.

25voto

Jaans Punkte 4538

Sie ist neu in SQL 2005 und bietet eine vereinfachte Möglichkeit, Objekte zu gruppieren, insbesondere zum Zweck der Sicherung der Objekte in dieser "Gruppe".

Unter folgendem Link finden Sie eine ausführlichere Erklärung, was das ist und warum wir es verwenden sollten:

Verstehen des Unterschieds zwischen Eigentümern und Schemas in SQL Server

2voto

Irf Punkte 3760

Etwas aus Microsoft (Dokumentation)

En dbo Benutzer ist ein spezieller Benutzerprinzipal in jeder Datenbank. Alle SQL Server-Administratoren, Mitglieder der sysadmin feste Serverrolle, sa Login und Eigentümer der Datenbank, geben Sie Datenbanken als dbo Benutzer. Die Website dbo Benutzer hat alle Rechte in der Datenbank und kann nicht eingeschränkt oder gelöscht werden. dbo steht für Datenbankbesitzer, aber das dbo Benutzerkonto ist nicht dasselbe wie das db_owner feste Datenbankrolle, und die db_owner Die feste Datenbankrolle ist nicht dasselbe wie das Benutzerkonto, das als Eigentümer der Datenbank eingetragen ist.
Die dbo Der Benutzer besitzt die dbo Schema. Die Website dbo Schema ist das Standardschema für alle Benutzer, es sei denn, es wird ein anderes Schema angegeben. Das dbo Schema kann nicht gelöscht werden. Der dbo-Benutzer ist Eigentümer des dbo-Schemas. Das dbo-Schema ist das Standardschema für alle Benutzer, es sei denn, es wird ein anderes Schema angegeben. Das dbo-Schema kann nicht gelöscht werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X