Tabela nie jest tworzona w schemacie dbo

16

Podczas tworzenia tabel w SSMS zdałem sobie sprawę, że jeśli wykonasz następującą instrukcję:

CREATE TABLE [tableName];

tabela zostanie utworzona na podstawie własnego schematu (a nie dbo). Aby więc utworzyć go w schemacie dbo, musisz to wyraźnie powiedzieć, tak:

CREATE TABLE [dbo].[tableName];

Czy ktoś zna sposób (np. Ustawienie dla całego serwera), aby podczas tworzenia tabeli część [dbo] nie musiała być określana?

Chinesinho
źródło
1
Która wersja serwera SQL?
4
I dlaczego masz problem z wyraźnym określeniem?
HLGEM

Odpowiedzi:

8

Schemat, który będzie używany, gdy schemat zostanie pominięty, będzie domyślnym schematem użytkownika bazy danych. Dlatego też, aby dboschemat miał utworzoną tabelę bez określania, należy ustawić domyślny schemat tego użytkownika bazy danych na dbo.

Ustawienie całego serwera? Nie wydaje mi się Ale możesz napisać zapytanie, aby przekonwertować wszystkich użytkowników bazy danych w określonej bazie danych na domyślny schemat zmieniony na, dbojeśli tak wybierzesz.

Thomas Stringer
źródło
@KAJ: SQL2008R2
Sidney Colônia Cunha
1
Ale nie można ustawić domyślnego schematu na dbo dla grup Windows ...
Chinesinho
5
@Chinesinho Nie można ustawić domyślnego schematu żadnej nazwy głównej serwera. Mylisz logowanie do serwera i użytkowników bazy danych. Użytkownicy bazy danych zawierają schematy domyślne.
Thomas Stringer
Ustawienie domyślnego schematu dla użytkowników zamapowanych na loginy grup systemu Windows nie jest obsługiwane przed SQL Server 2012.
db2
8

Może to może pomóc

USE [YourDBName]
GO
ALTER USER [YourUserName] WITH DEFAULT_SCHEMA=[dbo]
GO
LazyProgrammer
źródło
3
ale jeśli użytkownik korzysta z uwierzytelniania systemu Windows, nie może ustawić domyślnego schematu