Dans SQL Server 2005, existe-t-il un moyen de trouver des utilisateurs qui n'existent pas au niveau du serveur (un compte qui a été supprimé au niveau du serveur mais qui n'a pas été dissocié des bases de données avant sa suppression) ou des comptes qui ne sont pas liés (un compte peut avoir été supprimé au niveau du serveur mais pas au niveau db, puis réajouté mais le niveau db n'a jamais été nettoyé).
J'ai un serveur très en désordre et ce serait génial s'il y avait une requête à exécuter pour les trouver.
sql-server
sql-server-2005
users
DForck42
la source
la source
Réponses:
Le script suivant du site Brent Ozar Unlimited parcourt toutes les bases de données et répertorie les utilisateurs orphelins par base de données, ainsi que la commande drop pour les supprimer. Il peut y avoir une façon plus nette / plus récente de gérer cela, mais cela semble fonctionner correctement sur 2005-2012.
la source
Je voulais d'abord REMERCIER Mark pour avoir posté le script. Cela m'a fait gagner beaucoup de temps à l'écrire à partir de zéro. Je l'ai modifié un peu depuis que j'ai rencontré le problème où j'ai reçu une erreur indiquant que le "principal de la base de données possède un schéma dans la base de données et ne peut pas être supprimé". J'ai modifié le script pour générer les commandes pour l'erreur SCHEMA et également pour l'erreur de rôle si vous devez également obtenir celle-ci.
J'espère que cela aide quelqu'un là-bas ..
la source
Ce sp_change_users_login est amorti à partir de SQL 2008 mais fonctionne toujours bien. Si vous passez l'option «rapport», elle répertoriera tous les utilisateurs qui n'ont pas de connexion associée.
Si vous souhaitez l'exécuter pour toutes vos bases de données, vous pouvez le faire comme ceci.
Si vous le recherchez dans BOL, vous trouverez également des options pour réparer les utilisateurs "orphelins".
la source