virer un user dans une base SQLserver

virer un user dans une base SQLserver - SQL/NoSQL - Programmation

Marsh Posté le 19-12-2002 à 17:16:15    

j'essaie d'enlever un user d'une base de donnée.  
Mais il me dit "The selected user cannot be dropped because the user owns objects"
 
j'ai pourtant effacé le user.. dans "security" et j'ai décoché "db_owner"
 
comment je peux faire ?

Reply

Marsh Posté le 19-12-2002 à 17:16:15   

Reply

Marsh Posté le 19-12-2002 à 17:21:49    

zetoune a écrit :

j'essaie d'enlever un user d'une base de donnée.  
Mais il me dit "The selected user cannot be dropped because the user owns objects"
 
j'ai pourtant effacé le user.. dans "security" et j'ai décoché "db_owner"
 
comment je peux faire ?
 


 
bah d'autres objets doivent lui appartenir ?

Reply

Marsh Posté le 19-12-2002 à 17:23:27    

ben j'en trouve pas !

Reply

Marsh Posté le 19-12-2002 à 17:25:07    

contraintes ? vues ? procédures stockées ?

Reply

Marsh Posté le 19-12-2002 à 17:28:05    

ouais partout.. y a rien . c'est bizarre

Reply

Marsh Posté le 20-12-2002 à 10:16:40    

Il lui reste peut-être des packages DTS ?
 
Sinon, tu peux générer un script de chacune des bases (avec
toutes les options), puis rechercher le nom de cet utilisateur dans les scripts générés.
 
Sinon on doit pouvoir s'en sortir avec un script SQL qui va lire les tables systèmes (j'ai pas le temps de faire ça, désolé).

Reply

Marsh Posté le 20-12-2002 à 10:56:36    

Non non.
 
Ce message apparait quand tu tente de supprimer le user qui a servi a créer des objets (tables, vues, procédures).
 
Il n'est normalement pas possible de faire cette suppression.
 
Pourquoi est tu dans un tel cas ?
 
C'est suite à une resto de DB sur un autre serveur SQL ?
 
Sinon, une des solutions consiste à utiliser une des procédure stockée système pour virer le user dans la table système "sysusers".
 
Je peux te donner la syntaxe des commande, mais dis moi d'abord  dans quel cas tu es, on risque de rendre la DB inutilisable.

Reply

Marsh Posté le 20-12-2002 à 14:58:50    

ouais... en fait c'est exactement ca..
c'est une DB de production... et que je voulais a jour par rapport a la DB originale. J'ai donc fait un restore de la DB originale sur la Db de prod.. et voilà ... le message qui apparait..

Reply

Marsh Posté le 20-12-2002 à 17:21:10    

Bon, alors :
 
Si tu te retrouve dans le cas d'un user déclaré sur ta DB restorée qui porte le même nom qu'un des user déclaré dans le conteneur "Sécurité" du SGBD mais dont le SID ne correspond pas. :
(Si c'est un autre cas, explique moi mieux ton pb)
 
Sous l'analyseur de requète (positionné sur ta DB) :
 
EXEC sp_change_users_login 'Report'
 
Là, tu auras comme résultat ton utilisateur dont le SID ne correspond pas à un compte de sécurité suivi du SID. Puis :
 
EXEC sp_change_users_login 'Update_One', 'NOM_UTILISATEUR','NOM_UTILISATEUR'
 
NOM_UTILISATEUR etant ton user unliké.
 
Mais attention, si tu n'es pas dans le cas que j'ai décrit en haut, N'ESSAYE PAS CE QUE JE VIENS DE TE DONNER !!!
 
[MODE J'Y SUIS POUR RIEN ON]
Je decline toute responsabilité dans le plantage de la base de prod :P
[MODE J'Y SUIS POUR RIEN OFF]
 
 
 
 
 :pt1cable:

Reply

Marsh Posté le 20-12-2002 à 17:37:30    

ouais... c'est bien ce cas la..
et ca marche .. MERCI... cool.
...

Reply

Marsh Posté le 20-12-2002 à 17:37:30   

Reply

Marsh Posté le 20-12-2002 à 17:50:49    

Cette opération est à faire à chaque restore de DB.

Reply

Marsh Posté le 20-12-2002 à 17:52:59    

ouais j avais cru comprendre :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed