共用方式為


分散式查詢

由於 ADSI 是 OLE DB 提供者,因此可以參與 SQL Server 7.0 Microsoft引進的分散式查詢。 以下是可能的案例:

  • 聯結 Active Directory 物件與 SQL Server 數據。
  • 從 Active Directory 物件更新 SQL 數據。
  • 建立與其他 OLE DB 提供者的三向或四向聯結。 例如,Index Server、SQL Server 和 Active Directory。

OLE DB 提供者支援兩個命令方言 LDAP 和 SQL,以存取目錄服務,並以表格式形式傳回結果,可使用 SQL Server 分散式查詢進行查詢。

啟動 SQL 查詢分析器

  1. 首先,在連結至目錄服務的 SQL Server 上開啟 SQL Query Analyzer (請參閱建立連結的伺服器)。
  2. 執行 SQL 查詢分析器 (啟動 |程式 |Microsoft SQL Server 7.0)
  3. 登入 SQL Server 電腦。
  4. 在查詢視窗的 [編輯器] 窗格中輸入 SQL 查詢。
  5. 按 F5 執行查詢。

下列各節提供詳細資料:

建立連結的伺服器

若要在 Windows 2000 Server 目錄服務上設定分散式聯結,請建立連結的伺服器。 若要這樣做,請使用 sp_addlinkedserver 系統預存程式來設定 ADSI 對應。 此程式會將名稱連結至 OLE DB 提供者名稱。

在下列範例中,請注意,有數個自變數與 sp_addlinkedserver 系統預存程式搭配使用:

  • “ADSI” 是 伺服器 自變數,而且會是這個鏈接伺服器的名稱。
  • “Active Directory Services 2.5” 是 srvproduct 自變數,這是您要新增為鏈接伺服器的 OLE DB 數據源名稱。
  • “ADSDSOObject” 是 provider_name 自變數。
  • “adsdatasource” 是 data_source 自變數,這是 OLE DB 提供者所解譯的數據源名稱。

EXEC 命令是用來執行系統預存程式。

EXEC sp_addlinkedserver 'ADSI', 'Active Directory Services 2.5', 
'ADSDSOObject', 'adsdatasource'
GO

針對 Windows 驗證的登入,自我對應就足以使用 SQL Server 安全性委派來存取目錄。 由於預設會針對透過 sp_addlinkedserver建立的連結伺服器建立自我對應,因此不需要其他登入對應。

針對 SQL Server 驗證的登入,您可以使用 sp_addlinkedsrvlogin 系統預存程式來設定適當的登入和密碼,以連線到目錄服務。

注意

可能的話,請使用 Windows 驗證。

 

建立 SQL Server 驗證登入

如果您想要使用 SQL Server 驗證的登入,而不是 Windows 驗證,請將登入新增至連結的伺服器(請參閱上一節)。 若要這樣做,請使用 sp_addlinkedsrvlogin 系統預存程式。

在下列範例中,有數個自變數與 sp_addlinkedsrvlogin 系統預存程式搭配使用:

  • “ADSI” 是 rmtsvrname 自變數,這是在上一個範例中建立的鏈接伺服器名稱。
  • “Fabrikam\Administrator” 是 locallogin 自變數,這是本機伺服器上的登入,而且可以是 SQL Server 登入或 Windows NT 使用者。
  • “CN=Administrator,OU=Sales,DC=activeds,DC=Fabrikam,DC=com” 是 rmtuser 自變數,這是您用來連線的使用者名稱,因為 使用自己false
  • “secret**2000” 是 rmtpassword ,這是與 rmtuser 相關聯的密碼

EXEC 命令是用來執行系統預存程式。

EXEC sp_addlinkedsrvlogin 'ADSI', false, 'Fabrikam\Administrator', 
'CN=Administrator,OU=Sales,DC=activeds,DC=Fabrikam,DC=com', 'secret**2000'

查詢目錄服務

建立連結的伺服器之後,請使用 OPENQUERY 語句,將查詢傳送至目錄服務。 下列 SQL 查詢會使用 CREATE VIEW 語句 建立虛擬數據表來保存查詢結果。 所建立的檢視名為 「viewADContacts」。。

第一個 SELECT 語句會定義從目錄服務查詢的資訊,並將其對應至數據表中的數據行。 以括弧括住的資訊表示放入虛擬數據表中的數據。 不在括弧中的資訊表示從目錄服務擷取的數據。 請注意,從目錄服務擷取的信息必須由其LDAP顯示名稱參考。

下一個語句是OPENQUERY 語句。 此語句有兩個自變數:ADSI,這是您所建立連結伺服器的名稱,以及查詢語句。 查詢語句包含下列專案:

  • SELECT 語句包含將從目錄服務取得的數據清單。 您必須使用LDAP顯示名稱來指出您要搜尋的數據。
  • FROM 語句包含從中取得此資訊的連結目錄伺服器名稱。
  • WHERE 語句 提供搜尋條件。 在此範例中,它會搜尋聯繫人。

最後一個 SELECT 語句是用來從檢視中挑選結果來顯示。

CREATE VIEW viewADContacts
AS
SELECT  [Name], sn [Last Name], street [Street], l [City], st [State]
FROM OPENQUERY( ADSI, 
     'SELECT name, sn, street, l, st
      FROM 'LDAP:// OU=Sales,DC=activeds,DC=Fabrikam,DC=Com'
      WHERE objectCategory='Person' AND 
      objectClass = 'contact'')
GO
SELECT * FROM viewADContacts