Truy vấn máy chủ LDAP bên ngoài từ máy chủ SQL


7

Tôi đã thực hiện nghiên cứu sâu rộng về truy vấn LDAP Server nhưng cho đến nay vẫn chưa thể khắc phục được. Do đó, nhờ các chuyên gia giúp đỡ.

Bối cảnh: Tôi có một máy khách có Máy chủ LDAP là OnPremise (mặc dù phải đối mặt công khai) và tôi có Máy chủ SQL (2012 SE) bên trong tường lửa. Giao tiếp giữa LDAP bên ngoài và Máy chủ SQL nội bộ vẫn ổn vì tôi có thể ping nhau. Tôi cũng đã tạo một tài khoản miền từ xa và sử dụng tài khoản này khi tạo Máy chủ được liên kết trên SQL Server. Tôi cũng có bộ điều khiển miền bên trong của chúng tôi có Mối quan hệ tin cậy miền. Bây giờ, tôi đã tạo 2 Máy chủ được liên kết bằng tài khoản Miền nhưng tôi không thể truy vấn Máy chủ LDAP trên cả bên trong và bên ngoài. Tôi hy vọng điều này có ý nghĩa. Dù sao, đây là các định nghĩa về Máy chủ được liên kết của tôi và các lỗi tôi đang nhận được

[Đã giải quyết] Máy chủ được liên kết với Máy chủ LDAP nội bộ : Điều này đã được giải quyết bằng cách sử dụng ADuser@domain.com thay vì domain / ADuser

USE [master]
GO

EXEC master.dbo.sp_addlinkedserver @server = N'ADSI', @srvproduct=N'Active 
Directory Service Interfaces', @provider=N'ADSDSOObject', 
@datasrc=N'adsdatasource'

EXEC master.dbo.sp_addlinkedsrvlogin 
@rmtsrvname=N'ADSI',@useself=N'False',@locallogin=NULL,
@rmtuser=N'Domain/ADUser',@rmtpassword='########'

Lỗi:

Msg 7321, Cấp 16, Trạng thái 2, Dòng 1 Đã xảy ra lỗi khi chuẩn bị truy vấn "CHỌN *
TỪ 'LDAP: //Domain.com/OU=Accounts,DC=Domain,DC=com' --WHERE objectClass = 'Người dùng '"để thực thi đối với nhà cung cấp OLE DB" ADSDSOObject "cho máy chủ được liên kết" ADSI ".

Máy chủ được liên kết với Máy chủ LDAP bên ngoài

USE [master]
GO


EXEC master.dbo.sp_addlinkedserver @server = N'ADSIE', @srvproduct=N'Active 
Directory Service Interfaces', @provider=N'ADSDSOObject', 
@datasrc=N'CustomerIPAdress'

EXEC master.dbo.sp_addlinkedsrvlogin 
@rmtsrvname=N'ADSI',@useself=N'False',@locallogin=NULL,
@rmtuser=N'Domain/ADUser',@rmtpassword='########'

Lỗi:

Msg 7399, Cấp 16, Trạng thái 1, Dòng 1 Nhà cung cấp OLE DB "ADsDSOObject" cho máy chủ được liên kết "ADSIE" đã báo cáo lỗi>. Nhà cung cấp chỉ ra rằng người dùng không có quyền> thực hiện thao tác. Msg 7321, Cấp 16, Trạng thái 2, Dòng 1 Đã xảy ra lỗi khi chuẩn bị truy vấn "CHỌN * TỪ 'LDAP: // Địa chỉ IP của khách hàng' WHERE objectClass = 'Người dùng'" để thực thi đối với nhà cung cấp OLE DB "ADsDSOObject" cho máy chủ được liên kết > "QUẢNG CÁO".

Bất kỳ trợ giúp sẽ được đánh giá cao. Cảm ơn trước.


Một phần của nó được giải quyết. Tôi vẫn gặp phải sự cố khi truy vấn Máy chủ LDAP bên ngoài. Nếu tôi giải quyết xong, tôi sẽ rất vui khi cung cấp giải pháp.
Sid

Bạn đã cân nhắc việc đi với gói SSIS chưa? Bạn có thể muốn xem câu trả lời của tôi cho stackoverflow.com/questions/8594775/ ,. Ngoài ra, ngay cả khi bạn tuân thủ phương pháp hiện tại của mình, có một số thông tin tốt trong các câu trả lời khác ở đây có thể giúp ích.
JamieSee

Có, tôi đã thử giải pháp trong liên kết. Tuy nhiên, tôi luôn kết thúc với "Không thể xây dựng truy vấn" hoặc "Lỗi cú pháp". Tôi đã chắc chắn rằng cú pháp vẫn ổn nhưng tôi không biết lý do tại sao nó vẫn tiếp tục ném những lỗi đó
Sid

Bạn đang thực hiện truy vấn đối với máy chủ được liên kết thông qua bước Công việc Tác nhân SQL hoặc trong cửa sổ truy vấn bằng SSMS? Nếu nó được thực thi trong bước Công việc Đại lý SQL SSIS, bạn có thể phải tạo proxy gắn với tài khoản người dùng miền mà quản trị viên AD của bạn đã cấp quyền thích hợp để đọc AD. Nếu nó đang thực thi trong bước công việc T-SQL, bạn có thể phải thay đổi chủ sở hữu công việc. Xem technet.microsoft.com/en-us/l
Library / ms189064 (v = sql.105) .aspx

Lỗi trong câu hỏi trên xuất hiện khi tôi thực hiện truy vấn từ SSMS.
Sid

Câu trả lời:


1

Điều nổi bật nhất trong thông báo lỗi thứ hai của bạn là thông báo dưới đây:

Nhà cung cấp chỉ ra rằng người dùng không có quyền thực hiện thao tác

Điều này cho tôi biết rằng người dùng trong cấu hình máy chủ được liên kết của bạn không có quyền truy cập vào máy chủ AD / LDAP để thực hiện truy vấn đó. Đây là cấu hình ADSI của tôi cùng với một truy vấn mẫu. Bạn có thể cần phải tham gia nhóm SA của mình để đảm bảo tài khoản được định cấu hình trong máy chủ được liên kết của bạn có quyền truy cập chính xác vào truy vấn AD / LDAP.

    USE [master]
GO

/****** Object:  LinkedServer [ADSI]    Script Date: 11/10/2017 3:46:31 PM ******/
EXEC master.dbo.sp_addlinkedserver @server = N'ADSI', @srvproduct=N'Active Directory Services 2.5', @provider=N'ADSDSOObject', @datasrc=N'adsdatasource'
 /* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'ADSI',@useself=N'False',@locallogin=NULL,@rmtuser=N'domain\accountname',@rmtpassword='########'
GO
EXEC master.dbo.sp_serveroption @server=N'ADSI', @optname=N'collation compatible', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'ADSI', @optname=N'data access', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'ADSI', @optname=N'dist', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'ADSI', @optname=N'pub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'ADSI', @optname=N'rpc', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'ADSI', @optname=N'rpc out', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'ADSI', @optname=N'sub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'ADSI', @optname=N'connect timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'ADSI', @optname=N'collation name', @optvalue=NULL
GO
EXEC master.dbo.sp_serveroption @server=N'ADSI', @optname=N'lazy schema validation', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'ADSI', @optname=N'query timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'ADSI', @optname=N'use remote collation', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'ADSI', @optname=N'remote proc transaction promotion', @optvalue=N'true'
GO

Dưới đây là một ví dụ về việc sử dụng máy chủ được liên kết ADSI bằng openquery, nhưng bạn cần hiểu cấu trúc OU và cấu trúc miền của AD trước khi xây dựng chuỗi kết nối LDAP.

SELECT sn, displayName, givenName, mail, telephoneNumber, ipPhone, sAMAccountName
FROM OPENQUERY(ADSI, 
'SELECT sAMAccountName, displayName, telephoneNumber, ipPhone, mail, givenName, sn 
FROM ''LDAP://DC=test,DC=intranet,DC=com'' WHERE objectCategory = ''Person'' AND objectClass = ''user''')
AS derivedtbl_1

LƯU Ý: Tôi đã thay đổi tên DC trong chuỗi LDAP vì lý do bảo mật, nhưng bạn sẽ có thể có được ý tưởng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.