Microsoft® SQL Server™ 2000 將直接傳遞查詢作為未解釋的查詢字符串發送到 OLE DB 數據源。查詢必須使用 OLE DB 數據源可以接受的語法。Transact-SQL 語句像使用常規表引用一樣使用直接傳遞查詢結果。
本示例使用直接傳遞查詢從 Microsoft Access 版本的 Northwind 示例數據庫中檢索結果集。
SELECT *
FROM OpenRowset('Microsoft.Jet.OLEDB.4.0',
'c:\northwind.mdb';'admin'; '',
'SELECT CustomerID, CompanyName
FROM Customers
WHERE Region = ''WA'' ')
有兩種方法可以從 OLE DB 提供程序中生成行集:
·引用提供程序可以表現為表格格式行集的數據源中的對象。所有提供程序都支持這一功能。
·向提供程序發出一條命令,該命令應可以由提供程序處理且處理結果可以表現為行集。此功能要求提供程序支持 OLE DB Command 對象和它的所有強制接口。
當提供程序支持 Command 對象時,這兩個 Transact-SQL 函數可以用來發送命令(稱為直接傳遞查詢):
·OPENQUERY 使用鏈接服務器名稱向 OLE DB 數據源發送命令字符串。
·OPENROWSET 和 OPEBDATASOURCE 支持向 OLE DB 數據源發送命令字符串。可以使用特殊名稱引用所得到的行集。
OLE DB 規范並未定義一種可供所有 OLE DB 提供程序使用的命令語言。OLE DB 提供程序可以支持與所表現數據相關的任意命令語言。表現關系數據庫數據的 OLE DB 提供程序通常支持 SQL 語言。其它類型的提供程序(例如表現電子郵件文件或網絡目錄中的數據的提供程序)通常支持另一種語言。