2010-01-14 8 views
0

Je travaille sur une application Delphi/WIN32 qui utilise une base de données SQL Server comme back-end, en utilisant ADO pour accéder aux données. De nombreux utilisateurs utilisent cette application, mais un utilisateur utilise une configuration spéciale: ils ont plusieurs schémas de base de données et chaque schéma contient le modèle de données complet pour l'application. Chaque schéma a également un utilisateur de base de données qui a par défaut le schéma spécifique. Ils ont également un compte de connexion distinct pour chaque utilisateur de base de données, ce qui leur permet de contrôler le schéma à utiliser simplement en utilisant un autre compte de connexion dans la chaîne de connexion. Ils utilisent cette configuration pour avoir une seule base de données centralisée prenant en charge plusieurs bureaux. Normalement, chaque bureau aurait sa propre base de données, mais ici, chaque bureau a son propre schéma.Comment changer de schéma de base de données?

J'aime cette solution qu'ils utilisent. Je n'y ai pas pensé auparavant simplement parce que l'application est normalement utilisée par des bureaux uniques. Seul ce client avait besoin d'une base de données centralisée. L'application fonctionne très bien, même si elle n'est pas au courant de ces schémas, simplement parce que le compte de connexion aura par défaut le schéma correct.

Mais maintenant, ils ont demandé s'il est possible de changer le code d'une manière que l'utilisateur peut sélectionner le schéma auquel ils veulent se connecter. Ainsi, un utilisateur doit pouvoir basculer entre les schémas de l'application. Et je ne veux pas réécrire le code pour prendre en charge ces schémas simplement parce que j'ai besoin de garder la base de données de code SQL neutre. Je cherche donc un moyen de passer un utilisateur à un autre schéma sans trop d'impact sur le code lui-même.

Des suggestions?

Répondre

0

Comment changer le schéma par défaut de l'utilisateur?

ALTER USER <user name> 
    WITH DEFAULT_SCHEMA = <desired schema>; 

Bien sûr, vous devrez exécuter cette sous des privilèges plus élevés que je suis sûr que vous n'avez pas tous les utilisateurs avec des capacités de ALTER USER.

+0

J'ai considéré cela, mais cela affecterait l'utilisateur de la base de données, pas le compte de connexion. Il peut y avoir plusieurs comptes de connexion liés à l'utilisateur de la base de données, qui regarderont tous vers l'autre schéma. Pas une bonne idée. –

+0

Je ne comprends pas, vous sembliez indiquer que les connexions: les utilisateurs étaient 1: 1: "compte de connexion distinct pour chaque utilisateur de base de données" –

+0

Malheureusement, non. Il existe une relation 1: n entre les utilisateurs et les connexions. Mais chaque connexion se connecte à seulement 1 utilisateur. –

Questions connexes