Bonjour
Je rencontre un problème lors de la récupération des membres de groupes AD via requête LDAP et commande EXEC.
Je suis avec SQL Server 2008 et j'ai créé une procédure stockée qui récupère tous mes groupes AD ainsi que leurs membres.
Après avoir récupérer tous les groupes sans problèmes, je dois passer par des requêtes dynamiques pour obtenir les membres.
Voici le code:
Normalement cela bien fonctionner.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 declare @ResteATraite int declare @AdsPath nvarchar(600) declare @AdsPathReduit nvarchar(600) declare @Associat_Groupe nvarchar(100) declare @Requete nvarchar(4000) declare @DebRequeteInsert nvarchar(2000) declare @DebRequete nvarchar(2000) declare @Clause nvarchar(2000) declare @ClauseRestric nvarchar(2000) declare @NbLignes int set @DebRequeteInsert='INSERT INTO Tempo_ComptesGroupes (Associat_Login,Associat_Groupe) ' SELECT @ResteATraite=count(*) FROM dbo.Tempo_GroupesNT WHERE Traite='N' --boucle pour chaque groupe While (@ResteATraite>0) begin SELECT TOP 1 @AdsPath=AdsPath , @Associat_Groupe=Groupe FROM dbo.Tempo_GroupesNT WHERE Traite='N' SET @AdsPathReduit= substring(@AdsPath,8,len(@AdsPath)) -- on supprime LDAP:// set @DebRequete='SELECT samAccountName, ''' + replace(@Associat_Groupe,char(39), char(39)+char(39)) + ''' FROM OPENQUERY(ServeurLieAD, ''SELECT samAccountName FROM ''''LDAP://DC=....,DC=fr'''' ' set @Clause=' WHERE memberOf=''''' + replace(@AdsPathReduit,char(39), char(39)+char(39)+char(39)+char(39)) + ''''' ' set @Requete= @DebRequeteInsert + @DebRequete + @Clause + @ClauseRestric + ' '')' --print @Requete execute (@Requete) -- groupe traite UPDATE dbo.Tempo_GroupesNT SET Traite='O' WHERE Traite='N' and AdsPath=@AdsPath SELECT @ResteATraite=count(*) FROM dbo.Tempo_GroupesNT WHERE Traite='N' end
Par contre il me semble y avoir des trous. Je veux donc faire des investigations.
Cette procédure est lancée journalièrement par mon agent SQL.
L'historique me dit qu'elle s'est bien déroulée, mais je vois dans le détails (historique de la tâche) toutes les requêtes (tronqué évidement car trop nombreuses).
Lorsque je lance directement le traitement (depuis sql Server Management studio), j'obtiens à l'écran tous les résultats des insert select, comme si je ne faisais pas d'insert et à un moment je plante Management studio (trop de fenêtres).
Comment empêcher ces "retours" d'informations ?
J'ai déja SET NOCOUNT ON, mais évidement pas suffisant.
J'ai tenté
mais studio tique sur le SETS ?!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 execute (@Requete) WITH RESULT SETS NONE
Merci pour vos conseils
Partager