Ahoi
Ik ben bezig met een stored procedure aan het schrijven op SQL server. De bedoeling is om een tabel up te daten met gegevens uit de active directory. Dit werkt al perfect, maar dit bedrijf heeft meerdere vestigingen. Als ik alle accounts uit de AD haal, dan zijn er dat meer dan 1000, en werkt het niet.
Het idee is om dan maar een loopje te maken die vestiging per vestiging afhandelt.
Ik heb dus een loopje voor iedere vestiging:
Ik heb uit veiligheid de naam van het bedrijf in sterretjes gezet. Ik kan dus hiermee iedere keer de "connectionstring" naar de ADSI gaan genereren. Dit werkt perfect.
Ik heb ook het update script:
Maar het combineren van de 2 lukt me niet... Gewoon de connectionstring gaan printen is geen probleem, maar het daarwerkelijk gaan gebruiken, dat wil SQL server precies niet.
Tussen de "for" en "select" kan ik niets zetten, of ik krijg een fout: "Msg 156, Level 15, State 1, Line 40
Incorrect syntax near the keyword 'DECLARE'."...
Kan iemand me helpen?
Bedankt!
Ik ben bezig met een stored procedure aan het schrijven op SQL server. De bedoeling is om een tabel up te daten met gegevens uit de active directory. Dit werkt al perfect, maar dit bedrijf heeft meerdere vestigingen. Als ik alle accounts uit de AD haal, dan zijn er dat meer dan 1000, en werkt het niet.
Het idee is om dan maar een loopje te maken die vestiging per vestiging afhandelt.
Ik heb dus een loopje voor iedere vestiging:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| DECLARE @places as varchar(200) DECLARE @placestemp as varchar(200) DECLARE @place as varchar(4) SET @places = ',CTBP,CSBK,CSDF,CSNR,CSRO,CSSV,CTBI,CTCK' declare @iPos int set @ipos = 1 while @iPos != 8 begin set @placestemp = LTrim(left(LTrim(right(@places, (@iPos*5))),5)) set @placestemp = LTrim(right(@placestemp, 4)) DECLARE @ADSIURI as varchar(128) SET @ADSIURI = 'LDAP://OU=' + @placestemp + ';DC=***;DC=***' print @ADSIURI set @ipos = @ipos + 1 end |
Ik heb uit veiligheid de naam van het bedrijf in sterretjes gezet. Ik kan dus hiermee iedere keer de "connectionstring" naar de ADSI gaan genereren. Dit werkt perfect.
Ik heb ook het update script:
SQL:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
| set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO --ALTER procedure [dbo].[pr_UserAdministration_DailyJob] --as DECLARE @mobile as varchar(15) DECLARE @telephonenumber as varchar(15) DECLARE @facsimiletelephonenumber as varchar(15) DECLARE @mail as varchar(255) DECLARE @sAMAccountName as varchar(50) DECLARE @places as varchar(200) DECLARE @placestemp as varchar(200) DECLARE @place as varchar(4) declare @iPos int DECLARE @MyCursor1 CURSOR SET @places = ',CTBP,CSBK,CSDF,CSNR,CSRO,CSSV,CTBI,CTCK' set @ipos = 1 while @iPos != 9 begin set @placestemp = LTrim(left(LTrim(right(@places, (@iPos*5))),5)) set @placestemp = LTrim(right(@placestemp, 4)) SET @MyCursor1= CURSOR FAST_FORWARD FOR SELECT mobile, telephonenumber, facsimiletelephonenumber, mail, sAMAccountName FROM OPENQUERY(ADSI,'SELECT mobile, telephonenumber, facsimiletelephonenumber, mail, sAMAccountName FROM ''LDAP://OU=CTBP;DC=***;DC=***'' WHERE objectCategory = ''Person'' AND objectClass = ''user''') WHERE sAMAccountName IS NOT NULL OPEN @MyCursor1 FETCH NEXT FROM @MyCursor1 INTO @mobile, @telephonenumber, @facsimiletelephonenumber, @mail, @sAMAccountName WHILE @@FETCH_STATUS = 0 BEGIN /*DECLARE @ADSIURI as varchar(128) SET @ADSIURI = 'LDAP://OU=' + @placestemp + ';DC=***;DC=***' print @ADSIURI*/ --print @placestemp + @sAMAccountName + @mobile + @telephonenumber + @facsimiletelephonenumber + @mail EXEC pr_UserAdministration_UpdateEmployeeAD @mobile, @telephonenumber, @facsimiletelephonenumber, @mail, @sAMAccountName FETCH NEXT FROM @MyCursor1 INTO @mobile, @telephonenumber, @facsimiletelephonenumber, @mail, @sAMAccountName END CLOSE @MyCursor1 DEALLOCATE @MyCursor1 set @ipos = @ipos + 1 end |
Maar het combineren van de 2 lukt me niet... Gewoon de connectionstring gaan printen is geen probleem, maar het daarwerkelijk gaan gebruiken, dat wil SQL server precies niet.
Tussen de "for" en "select" kan ik niets zetten, of ik krijg een fout: "Msg 156, Level 15, State 1, Line 40
Incorrect syntax near the keyword 'DECLARE'."...
Kan iemand me helpen?
Bedankt!