2010-08-27 2 views
0

J'ai nommé un schéma incorrect et toutes les tables sont créées avec un schéma de mauvais nom. Alors j'en ai créé un, et j'utilise alter schema pour transférer les tables.SQLServer: Problème lors du choix d'un schéma par défaut pour un utilisateur

Le premier problème est, SQL Server échoue lorsque je tente de laisser tomber le mauvais schéma, d'autre part, bien que les utilisateurs ont été créés avec le nouveau schéma par défaut, je me dis que je pourrais dire simplement

select * from table1, 

plutôt que

select * from myschema.table1, 

mais cela ne fonctionne pas. Je dois être explicite. Avez-vous une idée de ce qui passe? Le plus étrange, c'est que l'ancien utilisateur qui a été créé avec le mauvais schéma par défaut, ne peut pas le changer. C'est plutôt frustrant. S'il vous plaît aider.

Répondre

2

Pouvez-vous essayer de faire ce qui suit:

ALTER USER userName 
WITH DEFAULT_SCHEMA =myschema 

En supposant « mon_schema » est le nouveau schéma que vous voulez que l'utilisateur par défaut à.

Je sais que vous avez mentionné que le nouvel utilisateur est créé avec le nouveau schéma, mais si tel est le cas, alors vous ne devriez pas voir ce genre d'erreur. Donc, quelque chose semble avoir mal tourné. La définition explicite du schéma par défaut peut corriger cela.

En général,

  1. Le schéma par défaut de votre session de connexion dans la base de données actuelle est le schéma par défaut attribué au niveau de base de données courant principal - base de données utilisateur.

  2. Si vous faites référence à un objet dans le schéma par défaut, vous n'avez pas besoin de spécifier le nom de schéma.

  3. Si vous faites référence à un objet en dehors du schéma par défaut, vous devez spécifier le nom du schéma.

Pour plus de détails concernant le schéma de la session, etc peut-être this aidera également

+0

Il fonctionne, et si je vais à la propriété de l'utilisateur, il ne montre le nouveau schéma par défaut. Cependant, une requête de sélection ne fonctionne pas à moins que je dis explicitement select * from new_default_schema.table1, qui contrecarre mon but d'appliquer un schéma par défaut. Des idées? – Haoest

+1

Juste pour vous assurer absolument - êtes-vous sûr que vous vous connectez avec ce même utilisateur. Pouvez-vous peut-être faire un PRINT User_Name(); au lieu de votre sélectionner - pour vérifier le nom d'utilisateur utilisé par la connexion? Je sais qu'il peut sembler idiot, mais parfois, il aide à revérifier en particulier dans un scénario comme la vôtre ... ce qui ne marche pas honnêtement semble logique :-) – InSane

+1

oh merde. J'utilise le même onglet de requête bien que je dis explicitement déconnecter de l'Explorateur d'objets, donc en gros je faisais requête sur l'ancienne identification d'utilisateur toute cette nuit. Et pour la même raison, je ne peux pas supprimer l'ancien schéma car la session s'y accrochera. Pire nuit jamais. – Haoest

Questions connexes