Warum beginnen Tabellennamen in SQL Server mit "dbo"?


295

Zumindest in meiner lokalen Instanz wird beim Erstellen von Tabellen allen das Präfix "dbo" vorangestellt. Warum ist das so?


Antworten:


234

dbo ist das Standardschema in SQL Server. Sie können Ihre eigenen Schemas erstellen, um Ihren Objektnamespace besser verwalten zu können.


22
Als Best Practice füge ich immer das "dbo" hinzu. Präfix, obwohl es nicht notwendig ist. In SQL ist es meistens gut, explizit zu sein.
SurroundedByFish

3
@ SurroundedByFish: Wahrscheinlich keine bewährte Methode, aber ich könnte mich irren, da ich kein SQL-Experte bin. stackoverflow.com/a/769639/602245
Brett

13
In diesem Artikel aus einer anderen Antwort wird behauptet, dass es sich tatsächlich um eine bewährte Methode handelt: "Der Code müsste nicht den vollständig qualifizierten Namen verwenden, obwohl dies einen leichten Leistungsgewinn bedeutet und als bewährte Methode angesehen wird."
Carl G.

7
In der Antwort , die Sie verlinkt haben, wird außerdem empfohlen, das "dbo" einzuschließen. damit der Optimierer das Schema nicht nachschlagen muss.
Carl G

7
dbo ist keine gute Praxis. Erstellen Sie Ihr eigenes Schema und verwenden Sie es immer. dbo existiert nur als Migrationstrick, sodass Pre-SQL Server 2005 weiterhin funktioniert. Ja, verwenden Sie immer ein Schema für perf. Nein, nicht die Migration (zB dbo).
David Betz

85

Wenn Sie SQL Server Management Studio verwenden, können Sie Ihr eigenes Schema erstellen, indem Sie zu Datenbanken - Ihre Datenbank - Sicherheit - Schemas navigieren.

Das Erstellen eines Skripts mithilfe 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 beispielsweise ein Schema für "Finanzinformationen" und ein anderes für "Persönliche" Daten erstellen. Ihre Tabellen würden dann angezeigt als:

Financial.BankAccounts Financial.Transactions Personal.Address

Anstatt das Standardschema von dbo zu verwenden.


Wissen Sie, ob dies Probleme verursacht, wenn wir das Entity-Framework verwenden?
Batmaci

6
Sie können Schemas mit Entity Framework verwenden - auch mit Code zuerst, wenn Sie möchten:[Table("Customer", Schema = "MySchema")]
Fenton

Gewährt die 'AUTHORIZATION [dbo]' die gleichen Berechtigungen wie dbo für das Schema, oder muss ich den Benutzern weiterhin Berechtigungen erteilen?
Mark Micallef

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.