Cara mengaktifkan Ad Hoc Distributed Queries

105

Ketika saya menjalankan kueri dengan OPENROWSETSQL Server 2000, ini berfungsi.

Tetapi kueri yang sama di SQL Server 2008 menghasilkan galat berikut:

SQL Server memblokir akses ke STATEMENT 'OpenRowset / OpenDatasource' dari komponen 'Ad Hoc Distributed Queries' karena komponen ini dimatikan sebagai bagian dari konfigurasi keamanan untuk server ini. Administrator sistem dapat mengaktifkan penggunaan 'Ad Hoc Distributed Queries' dengan menggunakan sp_configure

pembuat kode darurat
sumber
Ngomong-ngomong, Anda akan lebih baik untuk memperhatikan peringatan dan mengubah kode SQL Anda untuk menggunakan Server Tertaut daripada OPENROWSET.
RBarryYoung
2
@RBarryYoung sebenarnya bukan "peringatan" - itu hanya pemberitahuan yang mengatakan itu tidak diaktifkan. Apa bahayanya memungkinkan ini?
Conrad
1
jika pengguna jahat dapat menginjeksi SQL di suatu tempat, mengaktifkan opsi ini dapat memungkinkan mereka untuk menyelidiki file data yang mereka pilih. Jika Anda mengaturnya sebagai Server Tertaut, hanya file tertentu - Server Tertaut - yang diekspos (dan Anda memiliki keamanan SQL Server terintegrasi yang dapat Anda gunakan, dll.).
Mike M
tetapi saya menyukai opsi ini untuk pengujian internal dan migrasi data saya ... karenanya mencari cara menggunakannya lagi :)
Mike M

Jawaban:

217

Perintah berikut dapat membantu Anda ..

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO
Hasib Hasan Arnab
sumber
14

Anda dapat memeriksa perintah berikut

sp_configure 'show advanced options', 1;
RECONFIGURE;
GO  --Added        
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO

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

Atau tautan dokumentasi ini

Félix Gagnon-Grenier
sumber
5
Anda perlu menambahkan 'GO' setelah 'RECONFIGURE;' pertama jika tidak, ini adalah solusi sempurna
1
tidakkah Anda perlu menghubungkan server sebelum SELECT Anda?
Sebastien H.
3

Jika pembaruan ad hoc untuk katalog sistem "tidak didukung", atau jika Anda mendapatkan "Msg 5808" maka Anda perlu mengonfigurasi dengan penggantian seperti ini:

EXEC sp_configure 'show advanced options', 1
RECONFIGURE with override
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE with override
GO
Robino
sumber
2
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
pengguna2129794
sumber
Anda tidak perlu GO setelah setiap baris
Rob