Utilisateurs de base de données et connexions au serveur et mappage entre eux


9

J'ai une instance de SQL Server 2008 R2 Express Edition à la maison et une autre sur un serveur chez un client que j'utilise pour développer une application utilisant Access comme frontal. Cette application dispose de 5 connexions distinctes que je peux utiliser dans la chaîne de connexion (en fonction du groupe d'accès dans lequel se trouve l'utilisateur). L'instance d'origine possède plusieurs bases de données - dont certaines n'ont rien à voir avec ces applications

J'ai créé manuellement les connexions dans chaque instance au fil du temps (et probablement dans un ordre différent).

J'espère pouvoir (plus d'une fois) prendre une sauvegarde de ma machine à domicile de la base de données sur laquelle je travaille et la charger sur l'instance chez le client à l'aide de la restauration, en déplaçant simplement les fichiers du jeu de sauvegarde vers le réel les fichiers utilisés sur ce serveur pendant le processus de restauration. Le morceau que je ne comprends pas est le mappage entre l'utilisateur de la base de données et la connexion.

J'avais pensé que la correspondance du nom devrait être suffisante, mais en essayant de résoudre un problème sur lequel les utilisateurs de la base de données restaurée ne semblaient pas être mappés à la connexion au serveur, je suis tombé sur l'instruction Transact-SQL ALTER USER et en particulier sa référence à l'utilisation de WITH LOGIN et une discussion sur un "SID".

Étant donné que (je présume) que les noms de connexion au serveur ont des SID différents dans chaque instance, cela signifie-t-il qu'après avoir chargé une sauvegarde entre les instances, je dois reconnecter le mappage avec une série de commandes ALTER USER WITH LOGIN?

Réponses:


9

Loginsou les connexions au serveur existent au niveau du serveur SQL et l' database userest au niveau de la base de données. Ils n'ont pas besoin d'avoir le même nom, mais généralement. Dans une instance, vous ne pouvez pas avoir une fonction d'utilisateur de base de données correctement sans une connexion SQL Server correspondante.

Supposons que vous ayez une instance: instanceA avec un utilisateur de connexion SeverA sur votre ordinateur. Vous pouvez mapper cette connexion de serveur userA à un utilisateur de base de données: userA pour une base de données DB_A . Ils sont tous deux nommés userA , mais l'un est le serveur loginet l'autre est le database user. L'utilisateur de la base de données: userA réside dans DB_A . Lorsque vous sauvegardez et restaurez DB_A depuis instanceA vers une autre instanceB , l' utilisateur de la base de données: userA est déplacé, mais la connexion au serveur: userA reste toujours sur instanceA. Pour déplacer les connexions de instanceA vers instanceB, vous pouvez utilisersp_help_revlogin (Cliquez pour consulter la page KB) .

Si vous aviez précédemment créé la connexion utilisateur SQL Server userA sur instanceB , SQL tentera de mapper cette connexion avec la base de données utilisateur: userA, lorsque DB_A est restauré de instanceA à instanceB. Si cela échoue, vous pouvez utiliser la procédure sp_change_users_login (Cliquez pour le lien BOL) pour corriger les mappages rompus. Espérons que cela arrange les choses.


Merci - je crois que j'avais les bons concepts, mais les sp_help_revlogin et sp_change_users_login et nouveau et je vais m'aider. J'explorerai plus. Merci
akc42
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.