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:

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
Normalement cela bien fonctionner.
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é
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
execute (@Requete) WITH RESULT SETS NONE
mais studio tique sur le SETS ?!

Merci pour vos conseils