Wednesday, June 28, 2017

Cannot fetch a row from OLE DB provider "ADSDSOObject" for linked server

Meine Abfrage sollte alle Benutzer in einer bestimmten AD-Gruppe selektieren.

Wenn man so eine Fehlermeldung (Cannot fetch a row from OLE DB provider "ADSDSOObject" for linked server) bekommt, hat es meistens mit der Anzahl der "OLEDB Provider for Directory Services" abgefragten Daten zu tun.

Den Schwellenwert-Vorschlag 901 habe ich nicht gesehen und auch nicht probiert. Die Daten waren 18000+. Und eine andere Abfrage brachte schon 17403 Datensaetze. Also der Wert musste deutlich hoeher sein als 901. Ich habe dann ueber sAMAccountName eine Paging eingebaut.

SELECT sAMAccountname FROM OPENQUERY (ADS, ';(&amp;(&amp;(&amp;(objectCategory=person)(memberof=CN=DE-BW-Sales,OU=Groups,DC=consto,DC=com))(sAMAccountName<=d))(sAMAccountName>=a));sAMAccountname;subtree') ORDER BY Samaccountname

Bei dem kleiner-gleich Operator wird das Gleichheitszeichen ignoriert. Also hier kommen nur die User, deren Benutzernamen mit a, b und c anfangen.

No comments: