Bonjour,
je voudrai connaitre qui à changer les roles d'un utilisateur de la base de donnée.
je travaille dans un nvirenement sql server 2005
Merci
Bonjour,
je voudrai connaitre qui à changer les roles d'un utilisateur de la base de donnée.
je travaille dans un nvirenement sql server 2005
Merci
Bonsoir,
Pour cela il faut que tu utilises les notifications d'événements avec les types d'événements DROP_SERVER_ROLE_MEMBER, ADD_SERVER_ROLE_MEMBER, ADD_ROLE_MEMBER et DROP_ROLE_MEMBER selon ton cas.
++
merci pour ta réponse
mais comment je pourrai utiliser les notifications d'événements
Re,
Excusez moi je vous ai induit en erreur il faut utiliser l'événement AUDIT_ADD_MEMBER_TO_DB_ROLE_EVENT dans votre cas pour l'ajout et la suppression d'utilisateurs à des roles de bases.
Il faut utiliser la technologie service broker pour cela.
Les étapes sont les suivantes :
- Vérifier que service broker est activée sur la base de données
- Créer une queue de message (CREATE QUEUE ...)
- Créer un service qui utilisera cette queue avec un contrat prédéfin pour les notifications (CREATE SERVICE ...)
- Créer une notification d'événement avec l'étendue serveur, notifiant l'événement AUDIT_ADD_MEMBER_TO_DB_ROLE_EVENT associé au service créé. (CREATE EVENT NOTIFICATION ...)
Il ne vous reste plus qu'à lire la queue de message et à déverser vos informations dans une table par exemple. (RECEIVE message_body, message_sequence_number FROM syseventqueue INTO ...)
++
Merci encore pour votre réponse. J'ai utilisé la requête suivante :
CREATE QUEUE Q1 ;
GO
CREATE SERVICE S1
ON QUEUE Q1
GO
CREATE EVENT NOTIFICATION log_ddl
ON server
FOR AUDIT_ADD_MEMBER_TO_DB_ROLE_EVENT
TO SERVICE 'S1',
'8140a771-3c4b-4479-8ac0-81008ab17984' ;
SELECT * FROM sys.server_event_notifications
WHERE name = 'log_ddl'
mais je n'arrive pas à lire les informations de la queue même en faisons :
RECEIVE * FROM Q1
merci encore
Et en faisant un simple SELECT * FROM Q1 ?
merci Mike,
j'ai trouvé la solution on utilisant les fichiers de traces
merci
Vous n'avez pas précisé le contrat pour votre service :
++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CREATE SERVICE S1 ON QUEUE Q1 ( [http://schemas.microsoft.com/SQL/Notifications/PostEventNotification] ) GO
Vous avez marqué votre problème comme résolu ?
Est ce que cela fonctionne finalement ?
++
non, j'ai trouvé une autre solution, on utilisant les fichiers traces générés automatiquement par SQL SERVER.
mais le problème je n'ai pas toute la trace, j'en ai trouvé que celle de trois jours. ( je ne sais pas si c'est archiver ou supprimer automatiquement)
je ne sais pas si tu connais ou les fichiers de traces sont archivés.
Merci encore
A des fins de diagnostics cela peut être une solution en effet. La trace par défaut SQL Server récupère bien l'événement no 110 : Audit Add Member to DB Role Event.
Cependant les fichiers de trace ne sont pas archivés indéfiniment. Chaque fichier peut atteindre une taille de 20MB. Il peut y a voir 5 fichiers maximum. (L'option ROLLOVER étant activé).
La requête suivante vous permettra de voir où sont stockés vos fichiers :
++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT * FROM sys.fn_trace_getinfo(0) ; GO
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager