Que peut-on faire, le cas échéant, lorsque l' guest
utilisateur spécial est orphelin (pas lié à une connexion)?
Pour l'une de mes bases de données (SQL Server 2005), l'exécution de ce qui suit répertorie l' utilisateur invité en tant qu'utilisateur orphelin.
exec sp_change_users_login 'report'
Résultats:
UserName UserSID
guest 0x3C2E66759FFBC14F84127D6795C27FD3
Si j'essaie de réparer l' utilisateur invité à l'aide de cette procédure, j'obtiens ce qui suit:
exec sp_change_users_login 'update_one', 'guest', 'guest'
Mettre fin à cette procédure. 'guest' est une valeur interdite pour le paramètre de nom de connexion dans cette procédure.
Si j'essaie de supprimer l'utilisateur, j'obtiens:
L'utilisateur «invité» ne peut pas être supprimé, il peut uniquement être désactivé.
select * from sys.database_principals where name = 'guest'
Résulte en:
name guest
principal_id 2
type S
type_desc SQL_USER
default_schema_name guest
create_date 11/13/98 2:58 AM
modify_date 10/16/01 4:31 PM
owning_principal_id NULL
sid 0x3C2E66759FFBC14F84127D6795C27FD3
is_fixed_role 0
La base de données semble confuse quant à savoir s'il s'agit d'un utilisateur spécial ou non. Peut-on faire quelque chose?
la source
0x3C2E66759FFBC14F84127D6795C27FD3
au lieu de0x00
Terminating this procedure. 'guest' is a forbidden value for the login name parameter in this procedure.
Réponses:
L'utilisateur «invité» n'est jamais affecté à une connexion au serveur, même lors d'une nouvelle installation, il est classé comme utilisateur SQL sans connexion. Comme vous ne pouvez définir que le SID d'une connexion (lors de la création), et non un utilisateur, je ne pense pas que cela soit possible; sp_change_users_login ne fonctionne pas précisément parce que le compte invité ne doit jamais être mappé à une connexion au serveur. En conséquence, l'utilisateur "invité" est toujours un utilisateur orphelin. Mais ce n'est probablement pas la réponse que vous vouliez :)
la source
sp_change_users_login
rapport?Mes pensées ... La raison de
sp_change_users_login
cette erreur est que MS l'a aussi écrite. [Regarder le code de procédure système de temps en temps peut être amusant. :)] Cependant, le fait qu'il apparaisse lors de l'exécution du rapport indique que quelqu'un / un processus a foiré le compte, ou qu'un correctif logiciel possible de MS aurait pu le faire (on ne sait jamais).Le compte invité est censé être là, il existe dans chaque base de données créée car le compte existe par défaut dans le modèle. Pour que cela n'apparaisse pas dans le rapport, il faudrait probablement que le SID soit changé,
0x00
je suppose. Tant que le compte est désactivé, je le laisse tranquille et je l'ignore. Si cela me dérangeait vraiment, je débourserais l'argent et téléphonerais au support Microsoft.la source
guest
apparaît dans les résultats dans ce cas.Il y a donc une séquence de tâches que vous devez suivre
Je mets ici un exemple en espérant que cela vous aidera:
la source
guest
utilisateur. Voir la réponse ci-dessus de Mr.Brownstone.