Ad Hoc Dağıtılmış Sorgular nasıl etkinleştirilir


105

OPENROWSETSQL Server 2000'de bir sorgu çalıştırdığımda çalışıyor.

Ancak SQL Server 2008'deki aynı sorgu aşağıdaki hatayı oluşturur:

SQL Server, "Ad Hoc Dağıtılmış Sorgular" bileşeninin "OpenRowset / OpenDatasource" öğesine erişimi engelledi çünkü bu bileşen, bu sunucu için güvenlik yapılandırmasının bir parçası olarak kapatıldı. Bir sistem yöneticisi sp_configure kullanarak 'Ad Hoc Dağıtılmış Sorguların' kullanımını etkinleştirebilir


Bu arada, uyarıyı dikkate almanız ve SQL kodunuzu OPENROWSET yerine Bağlantılı Sunucular kullanacak şekilde değiştirmeniz daha iyi olur.
RBarryYoung

2
@RBarryYoung bu gerçekten bir "uyarı" değil - sadece etkinleştirilmediğini belirten bir uyarı. Bunu etkinleştirmenin tehlikesi nedir?
Conrad

1
Kötü niyetli bir kullanıcı SQL'i bir yere enjekte edebildiyse, bu seçeneğin açılması, seçtikleri veri dosyalarını araştırmasına izin verebilir. Bağlantılı Sunucu olarak ayarlarsanız, yalnızca belirli dosyalar - Bağlantılı Sunucular - açığa çıkar (ve kullanabileceğiniz entegre SQL Server güvenliğinize sahip olursunuz, vb.).
Mike M

ancak bu seçeneği dahili testlerim ve veri taşımam için seviyorum ... bu nedenle tekrar nasıl kullanacağımı arıyorum :)
Mike M

Yanıtlar:


217

Aşağıdaki komut size yardımcı olabilir ..

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO

14

Aşağıdaki komutu kontrol edebilirsiniz

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

Veya bu dokümantasyon bağlantısı


5
1. 'YENİDEN YAPILANDIRMA'dan sonra bir' GO 'eklemeniz gerekir; aksi takdirde mükemmel bir çözümdür

1
SELECT'inizden önce sunucuyu bağlamanız gerekmiyor mu?
Sebastien H.

3

Sistem kataloğuna yönelik geçici güncellemeler "desteklenmiyorsa" veya bir "Msg 5808" alırsanız, aşağıdaki gibi geçersiz kılma ile yapılandırmanız gerekecektir:

EXEC sp_configure 'show advanced options', 1
RECONFIGURE with override
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE with override
GO

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

Her satırdan sonra
Rob
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.