在指定的鏈接服務器上執行指定的傳遞查詢。 該服務器是 OLE DB 數據源。 OPENQUERY 可以在查詢的 FROM 子句中引用,就好象它是一個表名。OPENQUERY 也可以作為 INSERT、UPDATE 或 DELETE 語句的目標表進行引用。 但這要取決於 OLE DB 訪問接口的功能。 盡管查詢可能返回多個結果集,但是 OPENQUERY 只返回第一個。
OPENQUERY ( linked_server ,'query' )

linked_server
表示鏈接服務器名稱的標識符。
' query '
在鏈接服務器中執行的查詢字符串。 該字符串的最大長度為 8 KB。
OPENQUERY 不接受其參數的變量。
OPENQUERY 不能用於對鏈接服務器執行擴展存儲過程。 但是,通過使用四部分名稱,可以在鏈接服務器上執行擴展存儲過程。 例如:
EXEC SeattleSales.master.dbo.xp_msver
FROM 子句中對 OPENDATASOURCE、OPENQUERY 或 OPENROWSET 的任何調用與對用作更新目標的這些函數的任何調用都是分開獨立計算的,即使為兩個調用提供的參數相同也是如此。 具體而言,應用到上述任一調用的結果的篩選器或聯接條件不會影響其他調用的結果。
任何用戶都可以執行 OPENQUERY。 用於連接到遠程服務器的權限是從為鏈接服務器定義的設置中獲取的。
A. 執行 UPDATE 傳遞查詢,以下示例針對示例 A 中創建的鏈接服務器使用 UPDATE 傳遞查詢。
UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101') SET name = 'ADifferentName';
B. 執行 INSERT 傳遞查詢,以下示例針對示例 A 中創建的鏈接服務器使用 INSERT 傳遞查詢。
INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles') VALUES ('NewTitle');
C. 執行 DELETE 傳遞查詢,以下示例使用 DELETE 傳遞查詢刪除示例 C 中插入的行。
DELETE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
