Hello,
Une fois rechargé, j'ai une désynchronisation au niveau des users et des comptes de connexion à ma base Client, notamment avec mon user que nous appellerons "toto".
En effet c'est normal d'avoir ce comportement. Sur SQL Server un utilisateur de bases de données est associé à un login au niveau instance. Lorsque tu migres ta base de données, il faut recréer les logins correspondants sur l'instance cible.
En fonction de la version, tu peux aussi lancer le script suivant dans le contexte de la bases de données que tu viens de migrer:
ALTER USER <user> WITH LOGIN = <login>;
Une autre solution est de recréer tes logins sur le serveur cible avec le même SID que ceux existant sur le serveur source. Si tu es dans le cas d'un login de type Windows alors pas de souci car le SID qui permet de mapper ton login à un utilisateur de bases de données ne changera pas d'un environnement SQL à un autre car il est géré directement depuis Windows. En revanche si tu es dans le cas d'un utilisateur de type SQL, le SID du nouveau login créé ne va pas correspondre à celui de l'utilisateur de bases de données que tu transfères. le SID est régénéré à chaque création de login et différent d'une instance à une autre. Dans ce cas tu peux recréer les logins concernés avec le même SID généré sur le serveur source de la manière suivante:
1 2 3 4 5 6 7 8 9 10 11
| -- Récupération SID
select
name, sid
from sys.server_principals
where name = '<user>';
-- SID = 0xE33710CD150703479D5F71546901E909
-- Création du login avec le SID récupéré plus haut
create login <user>
with password = '<pwd>', sid = 0xE33710CD150703479D5F71546901E909, check_policy = off;
go |
Ensuite tu peux transférer ta base de données de la production vers l'environnement de recette sans avoir à exécuter d'étapes supplémentaires de remapping login <-> user
++
Partager