La table n'est pas créée sous le schéma dbo

16

Lors de la création de tables dans SSMS, j'ai réalisé que si vous exécutez l'instruction suivante:

CREATE TABLE [tableName];

la table sera créée sous votre propre schéma (et non dbo). Donc, pour le créer sous le schéma dbo, vous devrez le dire explicitement, comme ceci:

CREATE TABLE [dbo].[tableName];

Quelqu'un connaît-il un moyen (par exemple, un paramètre à l'échelle du serveur) de sorte que lorsqu'une table est créée, la partie [dbo] n'a pas besoin d'être spécifiée?

Chinesinho
la source
1
Quelle version de SQL Server?
4
Et pourquoi avez-vous un problème avec la spécification explicite?
HLGEM

Réponses:

8

Le schéma qui sera utilisé lorsque le schéma est omis sera le schéma par défaut de l'utilisateur de la base de données. Par conséquent, pour que le dboschéma ait la table créée sans spécifier, vous devez définir le schéma par défaut de cet utilisateur de base de données sur dbo.

Paramètre à l'échelle du serveur? Je ne pense pas. Mais vous pouvez écrire une requête pour convertir tous les utilisateurs de base de données dans une base de données particulière à leur schéma par défaut changé dbosi c'est ce que vous choisissez.

Thomas Stringer
la source
@KAJ: SQL2008R2
Chinesinho
1
Mais vous ne pouvez pas définir le schéma par défaut sur dbo pour les groupes Windows ...
Chinesinho
5
@Chinesinho Vous ne pouvez pas définir le schéma par défaut d'un principal de serveur. Vous confondez les connexions au serveur et les utilisateurs de base de données. Les utilisateurs de base de données contiennent des schémas par défaut.
Thomas Stringer
La définition du schéma par défaut pour les utilisateurs mappés aux connexions de groupe Windows n'est pas prise en charge avant SQL Server 2012.
db2
8

Peut-être que cela peut aider

USE [YourDBName]
GO
ALTER USER [YourUserName] WITH DEFAULT_SCHEMA=[dbo]
GO
LazyProgrammer
la source
3
mais si l'utilisateur est dans l'authentification Windows, il ne peut pas définir le schéma par défaut