OPENQUERY (SQL Transact)
Berlaku untuk:
SQL Server (semua versi yang didukung)
Azure 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.
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)
