Mengapa nama tabel dalam SQL Server dimulai dengan "dbo"?

295

Setidaknya pada contoh lokal saya, ketika saya membuat tabel, mereka semua diawali dengan "dbo." Mengapa demikian?

pupeno
sumber
19
itu adalah Pemilik Basis Data
AminM

Jawaban:

234

dbo adalah skema default di SQL Server. Anda bisa membuat skema sendiri untuk memungkinkan Anda mengelola objek namespace dengan lebih baik.

Daniel
sumber
22
Sebagai praktik terbaik, saya selalu menambahkan "dbo." meskipun tidak perlu. Sebagian besar waktu dalam SQL itu baik untuk menjadi eksplisit.
SurroundedByFish
3
@SurroundedByFish: Mungkin bukan praktik terbaik, tapi saya bisa salah karena saya bukan ahli SQL. stackoverflow.com/a/769639/602245
Brett
13
Artikel ini dari jawaban yang berbeda mengklaim bahwa itu sebenarnya praktik terbaik: "Kode tidak harus menggunakan nama yang sepenuhnya memenuhi syarat, meskipun ada sedikit peningkatan kinerja dalam melakukannya dan dianggap sebagai praktik terbaik."
Carl G
7
Selain itu, jawaban yang Anda tautkan juga merekomendasikan termasuk "dbo." sehingga pengoptimal tidak perlu mencari skema.
Carl G
7
dbo bukan praktik yang baik. Buat skema Anda sendiri dan selalu gunakan. dbo hanya ada trik migrasi sehingga pra-SQL Server 2005 terus bekerja. Ya, selalu gunakan skema untuk perf. Tidak, bukan migrasi (mis. Dbo).
David Betz
85

Jika Anda menggunakan Sql Server Management Studio, Anda dapat membuat skema Anda sendiri dengan meramban ke Database - Database Anda - Keamanan - Skema.

Untuk membuatnya menggunakan skrip semudah (misalnya):

CREATE SCHEMA [EnterSchemaNameHere] AUTHORIZATION [dbo]

Anda bisa menggunakannya untuk mengelompokkan tabel Anda secara logis, misalnya dengan membuat skema untuk informasi "Keuangan" dan lainnya untuk data "Pribadi". Tabel Anda kemudian akan ditampilkan sebagai:

Financial.BankAkun Keuangan.Transaksi Personal.Address

Alih-alih menggunakan skema default dbo.

Fenton
sumber
Apakah Anda tahu jika itu menyebabkan masalah saat kami menggunakan kerangka kerja Entity?
batmaci
6
Anda dapat menggunakan skema dengan Entity Framework - bahkan dengan kode terlebih dahulu jika Anda suka:[Table("Customer", Schema = "MySchema")]
Fenton
Apakah 'OTORISASI [dbo]' memberikan izin yang sama seperti dbo pada skema, atau apakah saya masih perlu memberikan izin kepada pengguna?
Mark Micallef
21

Ini baru untuk SQL 2005 dan menawarkan cara sederhana untuk mengelompokkan objek, terutama untuk tujuan pengamanan objek dalam "grup" itu.

Tautan berikut menawarkan penjelasan yang lebih mendalam tentang apa itu, mengapa kami akan menggunakannya:

Memahami Perbedaan antara Pemilik dan Skema di SQL Server

Jaans
sumber