Zumindest auf meiner lokalen Instanz, wenn ich Tabellen erstelle, werden sie alle mit "dbo." eingeleitet. Warum ist das so?
Antworten
Zu viele Anzeigen?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.
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:
-
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. -
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;
-
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.
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
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.
- See previous answers
- Weitere Antworten anzeigen