Je déplace occasionnellement une base de données (SQL Express 2012) d'un ordinateur de développement vers un serveur, ou inversement, à l'aide de la sauvegarde et de la restauration de base de données dans SQL Server Management Studio.
Chaque fois que je le fais, les applications de la machine cible ne peuvent pas accéder à la base de données tant que je n'ai pas supprimé l'utilisateur "george" des utilisateurs de la base de données (Base de données, Sécurité, Utilisateurs dans SQL Server Management Studio) et que je l'ajoute de nouveau. propriétaire sous Sécurité, Connexions, george / properties, mappage utilisateur.
Y a-t-il une meilleure manière de faire cela? Cela semble un peu compliqué.
sql-server
backup
xpda
la source
la source
CREATE LOGIN
instruction.Réponses:
C'est la différence entre les connexions et les utilisateurs et leur relation entre eux:
Ce qui arrive souvent avec les connexions authentifiées SQL et les utilisateurs de base de données lors d’une restauration est que le SIDS sera désynchronisé, rompant ainsi la relation. Cette relation doit être réparée avant de pouvoir vous connecter à la base de données à l'aide de cette connexion, car, aux yeux de SQL Server, ces principaux ne sont plus connectés. Vous pouvez résoudre ce problème avec le code SQL suivant:
Vous pouvez utiliser la requête suivante dans le contexte de votre base de données pour rechercher des orphelins:
la source
Vous pourriez envisager de modifier la base de données en base de données contenue . Les utilisateurs de base de données contenus sont authentifiés par la base de données et non au niveau de l'instance via la connexion. Cela facilite le déplacement de la base de données vers différentes instances.
Sinon, vous pouvez sauvegarder les informations de connexion à l'aide des scripts sp_help_revlogin fournis dans cette base de connaissances Microsoft . Et exécutez le script de sortie sur la nouvelle instance.
la source
J'utilise le script ci-dessous pour migrer / créer les comptes d'utilisateurs et les connexions. Exécutez-le à partir du serveur sur lequel vous avez restauré la base de données et indiquez le nom du serveur d'origine en tant que paramètre de la procédure.
Je ne prends aucun crédit pour la procédure car je l'ai obtenue ailleurs mais cela fonctionne bien.
la source
Voici une solution qui a fonctionné pour moi. Ce qu'il fait est de:
EXEC sp_change_users_login 'REPORT'
EXEC sp_change_users_login 'UPDATE_ONE','<userName>','<userName>'
la source
Vous pouvez toujours essayer simplement de relier tous les utilisateurs de la base de données à des noms de connexion similaires sur le serveur de base de données.
la source
Je pensais que cela valait la peine de noter cette solution simple au problème des affiches. Ceci est le script que je lance sur SQL Server 2008 , lorsque je reconstitue une base de données de production d'un serveur à base de données de développement / test sur un autre serveur lorsque le nom d'utilisateur est dans la sécurité> Les utilisateurs de la base de données , mais le
'login name'
manque de la propriété des utilisateurs sur la Onglet Général:Référence MSDN ici Notez que l'article recommande d'utiliser ALTER USER à la place pour les versions plus récentes de SQL.
la source