web-dev-qa-db-fra.com

Comment définir le schéma par défaut d'une base de données dans SQL Server 2005?

La ligne suivante fonctionne:

SELECT * FROM [myschema].users

Mais cela ne signifie pas:

SELECT * FROM users
26
user960567

Un schéma par défaut est spécifique à l'utilisateur:

USE yourDatabase;
ALTER USER [yourUser] WITH DEFAULT_SCHEMA = myschema;

Plus d'informations sur ALTER TABLE pour SQL 2005 pourraient également vous aider.

Comme cela est spécifique à l'utilisateur, si vous avez plusieurs utilisateurs, vous devrez exécuter cette requête (sur chaque base de données) pour chaque utilisateur dont vous souhaitez mettre à jour le schéma par défaut.

Il est important de noter:

The value of DEFAULT_SCHEMA is ignored if the user is a member of the sysadmin
fixed server role. All members of the sysadmin fixed server role have a default
schema of dbo.
54
Adam Wenger

Vous pouvez utiliser:

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;

Pour définir le schéma par défaut de l'utilisateur.

3
Ivan

Comme user960567, j'ai essayé les réponses d'Adam et Ivan et je n'ai pas pu le faire fonctionner.

Je courais:

ALTER USER myuser WITH DEFAULT_SCHEMA=newschema

comme suggéré, mais après avoir exécuté cela et exécuté

SELECT SCHEMA_NAME()

il renvoyait toujours "dbo" comme schéma par défaut.

Pour résoudre ce problème, j'ai exécuté:

ALTER USER myuser WITH DEFAULT_SCHEMA=newschema EXECUTE AS USER='myuser'

et cela a fonctionné comme prévu - exécutant maintenant:

SELECT SCHEMA_NAME()

renvoie 'newschema'.

0
t_warsop