OPENQUERY (SQL Transact)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure 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 tataan hasil, OPENQUERY hanya mengembalikan yang pertama.

Topic link iconKonvensi Sintaksis T-SQL

Sintaks

OPENQUERY ( linked_server ,'query' )  

Catatan

Untuk melihat sintaks transact-SQL untuk SQL Server 2014 dan 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 yang ditautkan. 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 di server yang ditautkan dengan menggunakan nama empat bagian. Contohnya:

EXEC SeattleSales.master.dbo.xp_msver  

Setiap panggilan ke OPENDATASOURCE, OPENQUERY, atau OPENROWSET dalam klausa 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 dari 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

A. Menjalankan kueri pass-through UPDATE

Contoh berikut menggunakan kueri pass-through UPDATE terhadap server tertaut yang dibuat di 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 di 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 (SQL Bertransaksi)
SELECT (Transact-SQL)
sp_addlinkedserver (SQL Bertransaksi)
sp_serveroption (SQL Bertransaksi)
UPDATE (SQL Transact)
WHERE (transact-SQL)