OPENQUERY (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Menjalankan kueri pass-through yang ditentukan pada server tertaut yang ditentukan. Server ini adalah sumber data OLE DB. OPENQUERY dapat direferensikan dalam klausa FROM kueri seolah-olah itu adalah nama tabel. OPENQUERY juga dapat direferensikan sebagai tabel target pernyataan INSERT, UPDATE, atau DELETE. Ini tunduk pada kemampuan penyedia OLE DB. Meskipun kueri dapat mengembalikan beberapa kumpulan hasil, OPENQUERY hanya mengembalikan yang pertama.

Konvensi sintaks transact-SQL

Sintaksis

OPENQUERY ( linked_server ,'query' )  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

linked_server
Adalah pengidentifikasi yang mewakili nama server yang ditautkan.

'kueri'
Apakah string kueri dijalankan di server tertaut. Panjang maksimum string adalah 8 KB.

Keterangan

OPENQUERY tidak menerima variabel untuk argumennya.

OPENQUERY tidak dapat digunakan untuk menjalankan prosedur tersimpan yang diperluas pada server tertaut. Namun, prosedur tersimpan yang diperluas dapat dijalankan pada server tertaut dengan menggunakan nama empat bagian. Misalnya:

EXEC SeattleSales.master.dbo.xp_msver  

Setiap panggilan ke OPENDATASOURCE, OPENQUERY, atau OPENROWSET dalam klausul FROM dievaluasi secara terpisah dan independen dari panggilan apa pun ke fungsi-fungsi ini yang digunakan sebagai target pembaruan, bahkan jika argumen identik diberikan ke dua panggilan. Secara khusus, kondisi filter atau gabungan yang diterapkan pada hasil salah satu panggilan tersebut tidak berpengaruh pada hasil yang lain.

Izin

Setiap pengguna dapat menjalankan OPENQUERY. Izin yang digunakan untuk menyambungkan ke server jarak jauh diperoleh dari pengaturan yang ditentukan untuk server tertaut.

Contoh

J. Menjalankan kueri pass-through UPDATE

Contoh berikut menggunakan kueri pass-through UPDATE terhadap server tertaut yang dibuat dalam contoh A.

UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101')   
SET name = 'ADifferentName';  

B. Menjalankan kueri pass-through INSERT

Contoh berikut menggunakan kueri pass-through INSERT terhadap server tertaut yang dibuat dalam contoh A.

INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles')  
VALUES ('NewTitle');  

C. Menjalankan kueri pass-through DELETE

Contoh berikut menggunakan kueri pass-through DELETE untuk menghapus baris yang disisipkan dalam contoh B.

DELETE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');  

D. Menjalankan kueri pass-through SELECT

Contoh berikut menggunakan kueri pass-through SELECT untuk memilih baris yang disisipkan dalam contoh B.

SELECT * FROM OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');  

Lihat Juga

DELETE (Transact-SQL)
FROM (Transact-SQL)
INSERT (Transact-SQL)
OPENDATASOURCE (Transact-SQL)
OPENROWSET (T-SQL)
SELECT (Transact-SQL)
sp_addlinkedserver (T-SQL)
sp_serveroption (T-SQL)
UPDATE (Transact-SQL)
WHERE (Transact-SQL)