Dlaczego nazwy tabel w SQL Server zaczynają się od „dbo”?


Odpowiedzi:


233

dbo jest domyślnym schematem w SQL Server. Możesz tworzyć własne schematy, aby lepiej zarządzać przestrzenią nazw obiektów.


22
Jako najlepszą praktykę zawsze dodam „dbo”. prefiks, nawet jeśli nie jest to konieczne. Przez większość czasu w SQL dobrze jest być jawnym.
SurroundedByFish

3
@SurroundedByFish: Prawdopodobnie nie jest to najlepsza praktyka, ale mogę się mylić, ponieważ nie jestem ekspertem od SQL. stackoverflow.com/a/769639/602245
Brett,

13
Ten artykuł z innej odpowiedzi stwierdzono, że w rzeczywistości jest to najlepsza praktyka: „Kod nie musiałby używać w pełni kwalifikowanej nazwy, chociaż osiąga to niewielki wzrost wydajności i jest uważany za najlepszą praktykę.”
Carl G

7
Również odpowiedź, którą podłączyłeś, zaleca również włączenie „dbo”. aby optymalizator nie musiał sprawdzać schematu.
Carl G

7
dbo nie jest dobrą praktyką. Utwórz własny schemat i zawsze go używaj. dbo istnieje tylko jako sztuczka migracyjna, więc wersja wcześniejsza niż SQL Server 2005 nadal działa. Tak, zawsze używaj schematu dla perf. Nie, nie migracja (np. Dbo).
David Betz

85

Jeśli korzystasz z Sql Server Management Studio, możesz utworzyć własny schemat, przechodząc do Bazy danych - Twoja baza danych - Bezpieczeństwo - Schematy.

Utworzenie go za pomocą skryptu jest tak proste jak (na przykład):

CREATE SCHEMA [EnterSchemaNameHere] AUTHORIZATION [dbo]

Możesz ich użyć do logicznego grupowania swoich tabel, na przykład poprzez utworzenie schematu dla informacji „finansowych” i innego dla danych „osobistych”. Twoje tabele byłyby wówczas wyświetlane jako:

Financial.BankAccounts Financial.Transactions Personal.Address

Zamiast używać domyślnego schematu dbo.


Czy wiesz, czy to powoduje jakiś problem, gdy używamy frameworku Entity?
batmaci

6
Możesz używać schematów w Entity Framework - nawet z kodem, jeśli chcesz:[Table("Customer", Schema = "MySchema")]
Fenton

Czy „AUTORYZACJA [dbo]” przyznaje takie same uprawnienia jak dbo w schemacie, czy też nadal muszę udzielać uprawnień użytkownikom?
Mark Micallef,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.