Tabel tidak dibuat di bawah skema dbo

16

Saat membuat tabel di SSMS, saya menyadari bahwa jika Anda menjalankan pernyataan berikut:

CREATE TABLE [tableName];

tabel akan dibuat di bawah skema Anda sendiri (dan bukan dbo). Jadi untuk membuatnya di bawah skema dbo, Anda harus mengatakannya secara eksplisit, seperti ini:

CREATE TABLE [dbo].[tableName];

Adakah yang tahu cara (mis. Pengaturan server-wide) sehingga ketika sebuah tabel dibuat, bagian [dbo] tidak perlu ditentukan?

Chinesinho
sumber
1
Versi server SQL yang mana?
4
Dan mengapa Anda memiliki masalah dengan menentukan secara eksplisit?
HLGEM

Jawaban:

8

Skema yang akan digunakan ketika skema dihilangkan akan menjadi skema default pengguna database. Oleh karena itu, agar dboskema memiliki tabel yang dibuat tanpa menentukan, Anda harus mengatur skema default pengguna database tersebut dbo.

Pengaturan di seluruh server? Saya kira tidak. Tapi Anda bisa menulis kueri untuk mengubah semua pengguna basis data di basis data tertentu ke skema default mereka diubah menjadi dbojika itu yang Anda pilih.

Thomas Stringer
sumber
@KAJ: SQL2008R2
Chinesinho
1
Tetapi Anda tidak dapat mengatur skema default ke dbo untuk grup Windows ...
Chinesinho
5
@ Chinesinho Anda tidak dapat menetapkan skema default dari prinsipal server apa pun. Anda membingungkan server login dan pengguna basis data. Pengguna basis data berisi skema default.
Thomas Stringer
Mengatur skema default untuk pengguna yang dipetakan ke login grup Windows tidak didukung sebelum SQL Server 2012.
db2
8

Mungkin ini bisa membantu

USE [YourDBName]
GO
ALTER USER [YourUserName] WITH DEFAULT_SCHEMA=[dbo]
GO
LazyProgrammer
sumber
3
tetapi jika pengguna di Otentikasi windows maka tidak dapat mengatur skema default