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?

pupeno
quelle
19
es ist Datenbankbesitzer
AminM

Antworten:

234

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

Daniel
quelle
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.

Fenton
quelle
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