Bagikan melalui


Konfigurasi server: Kueri Terdistribusi Ad Hoc

Berlaku untuk: SQL Server

Secara default, SQL Server tidak mengizinkan kueri terdistribusi ad hoc menggunakan OPENROWSET dan OPENDATASOURCE. Ketika opsi ini diatur ke 1, SQL Server memungkinkan akses ad hoc. Ketika opsi ini tidak diatur atau diatur ke 0, SQL Server tidak mengizinkan akses ad hoc.

Kueri terdistribusi ad hoc menggunakan fungsi OPENROWSET dan OPENDATASOURCE untuk menyambungkan ke sumber daya data jarak jauh yang menggunakan OLE DB. OPENROWSET dan OPENDATASOURCE harus digunakan hanya untuk mereferensikan sumber data OLE DB yang jarang diakses. Untuk sumber data apa pun yang diakses lebih dari beberapa kali, tentukan server tertaut.

Mengaktifkan penggunaan nama ad hoc berarti bahwa setiap akun SQL Server yang diautentikasi dapat mengakses penyedia. Administrator SQL Server harus mengaktifkan fitur ini untuk penyedia yang aman untuk diakses oleh akun lokal mana pun.

Keterangan

Jika Anda mencoba membuat koneksi ad hoc dengan Ad Hoc Distributed Queries dinonaktifkan, Anda akan melihat kesalahan berikut:

Msg 7415, Level 16, State 1, Line 1

Ad hoc access to OLE DB provider 'Microsoft.ACE.OLEDB.12.0' has been denied. You must access this provider through a linked server.

Azure SQL Database dan Azure SQL Managed Instance

Lihat Perbandingan fitur: Azure SQL Database dan Azure SQL Managed Instance untuk referensi.

Contoh

Contoh berikut mengaktifkan Ad Hoc Distributed Queries lalu mengkueri server bernama Seattle1 menggunakan OPENROWSET fungsi .

USE master;
GO

EXECUTE sp_configure 'show advanced options', 1;
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'Ad Hoc Distributed Queries', 1;
GO

RECONFIGURE;
GO

SELECT a.*
FROM OPENROWSET ('MSOLEDBSQL', 'Server=Seattle1;Trusted_Connection=yes;', 'SELECT GroupName, Name, DepartmentID
      FROM AdventureWorks2022.HumanResources.Department
      ORDER BY GroupName, Name') AS a;
GO

EXECUTE sp_configure 'show advanced options', 0;
GO

RECONFIGURE;
GO