J'ai un schéma à définir dans ma base de données. Sauf que maintenant, chaque fois que je fais une instruction SQL, je dois fournir le schéma ... SELECT * FROM [myschema].table
J'ai défini le schéma par défaut pour mon utilisateur à l'aide de Management Studio et j'ai également exécuté le ALTER USER myUser WITH DEFAULT_SCHEMA [myschema]
et j'obtiens toujours l'objet 'table' non valide lors de l'écriture d'une requête sans le schéma (SELECT * FROM table)
Existe-t-il un moyen d'écrire SELECT * FROM table
sans avoir à spécifier tout le temps le nom du schéma?
C'est sur SQL 2005 en utilisant SQL Management Studio.
L'utilisateur est-il un SA
, si tel n'est pas le cas, selon documentationSA
les utilisateurs sont toujours par défaut sur le schéma dbo
.
La valeur de DEFAULT_SCHEMA est ignorée si l'utilisateur est membre du rôle serveur fixe sysadmin. Tous les membres du rôle serveur fixe sysadmin ont un schéma par défaut dbo.
Quelques options:
Créez un synonyme pour le tableau que vous souhaitez référencer:
CREATE SYNONYM table_name
FOR [your_db].[your_schema].table_name
... qui affectera tous ceux qui n'utilisent pas au moins deux notations de nom, dans le contexte de cette base de données. En savoir plus ici . Mais il est finalement associé à un schéma.
Vérifiez que la base de données sélectionnée dans la liste déroulante "Bases de données disponibles" (en haut à gauche, à gauche du bouton Exécuter) est correcte.
Utilisez la notation à trois noms lorsque vous spécifiez des références de table (et de vue):
SELECT *
FROM [your_db].[your_schema].table_name
Si vous ne souhaitez pas utiliser de noms SQl "complets", vous devez éviter de créer vos tables à l'aide de tout compte ou rôle qui n'utilise pas le schéma par défaut "dbo" attribué. Pourquoi devez-vous modifier le schéma par défaut de l'utilisateur si vous ne prévoyez pas de l'utiliser?