La ligne suivante fonctionne:
SELECT * FROM [myschema].users
Mais cela ne signifie pas:
SELECT * FROM users
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.
Vous pouvez utiliser:
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
Pour définir le schéma par défaut de l'utilisateur.
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'.