Perché i nomi delle tabelle in SQL Server iniziano con "dbo"?


Risposte:


234

dbo è lo schema predefinito in SQL Server. È possibile creare schemi personalizzati per consentire una migliore gestione dello spazio dei nomi degli oggetti.


22
Come best practice, aggiungo sempre il "dbo". prefisso anche se non è necessario. Il più delle volte in SQL è bene essere espliciti.
SurroundedByFish,

3
@SurroundedByFish: Probabilmente non è una buona pratica, ma potrei sbagliarmi perché non sono un esperto di SQL. stackoverflow.com/a/769639/602245
Brett

13
Questo articolo da una risposta diversa afferma che in realtà è una buona pratica: "Il codice non dovrebbe usare il nome completo, sebbene ci sia un leggero guadagno in termini di prestazioni ed è considerato una buona pratica".
Carl G

7
Inoltre, la risposta che hai collegato consiglia anche di includere il "dbo". in modo che l'ottimizzatore non debba cercare lo schema.
Carl G,

7
dbo non è una buona pratica. Crea il tuo schema e usalo sempre. dbo esiste solo un trucco di migrazione, quindi pre-SQL Server 2005 continua a funzionare. Sì, usa sempre uno schema per perf. No, non quello di migrazione (ad es. Dbo).
David Betz,

85

Se si utilizza Sql Server Management Studio, è possibile creare il proprio schema passando a Database - Database - Sicurezza - Schemi.

Per crearne uno utilizzando uno script è facile come (ad esempio):

CREATE SCHEMA [EnterSchemaNameHere] AUTHORIZATION [dbo]

Puoi usarli per raggruppare logicamente le tue tabelle, ad esempio creando uno schema per informazioni "finanziarie" e un altro per dati "personali". Le tabelle verranno quindi visualizzate come:

Financial.BankAccounts Financial.Transactions Personal.Address

Anziché utilizzare lo schema predefinito di dbo.


Sai se ciò causa qualche problema quando utilizziamo Entity framework?
Batmaci,

6
Puoi usare gli schemi con Entity Framework - anche prima con il codice se ti piace:[Table("Customer", Schema = "MySchema")]
Fenton

"AUTORIZZAZIONE [dbo]" concede le stesse autorizzazioni di dbo sullo schema o devo ancora concedere le autorizzazioni agli utenti?
Mark Micallef,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.