Tabelle wird im Dbo-Schema nicht erstellt

15

Beim Erstellen von Tabellen in SSMS ist mir aufgefallen, dass Sie die folgende Anweisung ausführen:

CREATE TABLE [tableName];

Die Tabelle wird nach Ihrem eigenen Schema erstellt (und nicht nach DBO). Um es unter dem Dbo-Schema zu erstellen, müssen Sie dies explizit so sagen:

CREATE TABLE [dbo].[tableName];

Kennt jemand einen Weg (zB serverweite Einstellung), damit beim Erstellen einer Tabelle der [dbo] -Teil nicht angegeben werden muss?

Chinesinho
quelle
1
Welche Version von SQL Server?
4
Und warum haben Sie ein Problem mit der expliziten Angabe?
HLGEM

Antworten:

8

Das Schema, das verwendet wird, wenn das Schema weggelassen wird, ist das Standardschema des Datenbankbenutzers. Wenn dboSie möchten, dass das Schema die Tabelle ohne Angabe erstellt, müssen Sie daher das Standardschema des Datenbankbenutzers auf festlegen dbo.

Serverweite Einstellung? Ich glaube nicht. Sie können jedoch eine Abfrage schreiben, um alle Datenbankbenutzer in einer bestimmten Datenbank in ihr Standardschema zu konvertieren, das in geändert wurde, dbowenn Sie dies wünschen.

Thomas Stringer
quelle
@KAJ: SQL2008R2
Chinesinho
1
Sie können das Standardschema jedoch nicht auf dbo für Windows-Gruppen festlegen ...
Chinesinho
5
@Chinesinho Sie können das Standardschema für keinen Serverprinzipal festlegen. Sie verwechseln Serveranmeldungen und Datenbankbenutzer. Datenbankbenutzer enthalten Standardschemata.
Thomas Stringer
Das Festlegen des Standardschemas für Benutzer, die Windows-Gruppenanmeldungen zugeordnet sind, wird vor SQL Server 2012 nicht unterstützt.
db2 11.10.13
7

Vielleicht kann das helfen

USE [YourDBName]
GO
ALTER USER [YourUserName] WITH DEFAULT_SCHEMA=[dbo]
GO
LazyProgrammer
quelle
3