I have an Active Directory (LDAP) database, specifically AD LDS, that
stores information for a webserver on the same host. I have been attempting to access this server through Transact-SQL, but am currently blocked by the error:
Msg 7330, Level 16, State 2, Line 3
Cannot fetch a row from OLE DB provider "ADSDSOObject" for linked server "ADSI".
Note that this is not an AD database to store typical user information for authentication, and that it does not have a DC entry at the top level; it uses "O=[orgname],C=US" at the top level instead for the connection that
I'm trying to query.
I have a Linked Server defined with the name "ADSI" using the ADSDSOObject provider, and have tried using the following query to attempt to retrieve information from the AD database:
SELECT name
FROM OPENQUERY(ADSI,
'SELECT name FROM ''LDAP://localhost:389/O=[orgname],C=US''
WHERE objectClass = ''person''')
AS ldap_qry ;
In this particular database, there are only 6 entries with objectClass of 'person'.
I'm using the current login's security context, which should have access to the database (and I do not get an error related to permissions). If I
switch to an AD database that is used for authentication (and uses DC= [orgname],DC=net), I am able to access the information.
The error message is not particularly useful, and all of the information
that I've found on this particular error reference the limit on how many
rows can be returned (which is a lot higher than 6 rows).
Does anyone have any suggestions?
The ADSI linked server is created and works when you right click on it
and select Test Connection?
On Tuesday, July 14, 2020 at 9:17:35 AM UTC-7, Lyle H. Gray wrote:
I have an Active Directory (LDAP) database, specifically AD LDS, that
stores information for a webserver on the same host. I have been
attempting to access this server through Transact-SQL, but am
currently blocked by the error:
Msg 7330, Level 16, State 2, Line 3
Cannot fetch a row from OLE DB provider "ADSDSOObject" for linked
server "ADSI".
Note that this is not an AD database to store typical user
information for authentication, and that it does not have a DC entry
at the top level; it uses "O=[orgname],C=US" at the top level instead
for the connection that I'm trying to query.
I have a Linked Server defined with the name "ADSI" using the
ADSDSOObject provider, and have tried using the following query to
attempt to retrieve information from the AD database:
SELECT name
FROM OPENQUERY(ADSI,
'SELECT name FROM ''LDAP://localhost:389/O=[orgname],C=US''
WHERE objectClass = ''person''')
AS ldap_qry ;
In this particular database, there are only 6 entries with
objectClass of 'person'.
I'm using the current login's security context, which should have
access to the database (and I do not get an error related to
permissions). If I switch to an AD database that is used for
authentication (and uses DC= [orgname],DC=net), I am able to access
the information.
The error message is not particularly useful, and all of the
information that I've found on this particular error reference the
limit on how many rows can be returned (which is a lot higher than 6
rows).
Does anyone have any suggestions?
I believe your error is due to the fact that you might have more than
6 for that specific filter? Are you sure you only have 6 people that
match that filter?
This is what I have in case it helps
where objectClass = ''User''
AND objectCategory = ''Person''
AND
''userAccountControl:1.2.840.113556.1.4.803:'
' <>2 ')
This is what I have in case it helps
where objectClass = ''User''
AND objectCategory = ''Person''
AND
''userAccountControl:1.2.840.113556.1.4.803:'
' <>2 ')
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 296 |
Nodes: | 16 (2 / 14) |
Uptime: | 79:23:08 |
Calls: | 6,658 |
Calls today: | 4 |
Files: | 12,203 |
Messages: | 5,333,088 |
Posted today: | 1 |