Ad Hoc Distributed Queries को कैसे enable करें


105

जब मैं OPENROWSETSQL Server 2000 के साथ एक क्वेरी चलाता हूं तो यह काम करता है।

लेकिन SQL Server 2008 में समान क्वेरी निम्न त्रुटि उत्पन्न करती है:

SQL सर्वर ने घटक 'Ad Hoc Distributed Queries' के STATEMENT 'OpenRowset / OpenDatasource' तक पहुंच को अवरुद्ध कर दिया क्योंकि यह घटक इस सर्वर के लिए सुरक्षा कॉन्फ़िगरेशन के भाग के रूप में बंद है। एक सिस्टम व्यवस्थापक sp_configure का उपयोग करके 'Ad Hoc Distributed Queries' के उपयोग को सक्षम कर सकता है


वैसे, आप चेतावनी को ध्यान में रखते हुए बेहतर होंगे और OPENROWSET के बजाय लिंक्ड सर्वर का उपयोग करने के लिए अपने SQL कोड को बदलें।
RBarryYoung

2
@RarryYoung यह वास्तव में एक "चेतावनी" नहीं है - यह सिर्फ एक सूचना है जो कह रही है कि यह सक्षम नहीं है। इसे सक्षम करने का खतरा क्या है?
कॉनराड

1
यदि दुर्भावनापूर्ण उपयोगकर्ता कहीं SQL को इंजेक्ट करने में सक्षम था, तो इस विकल्प को चालू करने से उन्हें अपने चयन की डेटा फ़ाइलों की जांच करने की अनुमति मिल सकती है। यदि आप इसे एक लिंक किए गए सर्वर के रूप में सेट करते हैं, तो केवल विशिष्ट फाइलें - लिंक्ड सर्वर - उजागर होते हैं (और आपके पास आपकी एकीकृत SQL सर्वर सुरक्षा है जिसका आप उपयोग कर सकते हैं, आदि)।
माइक एम।

लेकिन मैं अपने आंतरिक परीक्षण और डेटा माइग्रेशन के लिए इस विकल्प को पसंद करता हूं ... इसलिए इसे फिर से उपयोग करने के तरीके की तलाश कर रहा हूं :)
माइक एम

जवाबों:


217

निम्नलिखित आदेश आपकी मदद कर सकते हैं ..

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

14

आप निम्न आदेश की जाँच कर सकते हैं

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

या यह प्रलेखन लिंक


5
1 'RECONFIGURE' के बाद आपको 'GO' जोड़ना होगा; अन्यथा यह एक सही समाधान है

1
क्या आपको अपने SELECT से पहले सर्वर को लिंक करने की आवश्यकता नहीं है?
सेबेस्टियन एच।

3

यदि सिस्टम कैटलॉग में तदर्थ अपडेट "समर्थित नहीं" है, या यदि आपको "Msg 5808" मिलता है, तो आपको इस तरह ओवरराइड से कॉन्फ़िगर करने की आवश्यकता होगी:

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

आपको हर लाइन के बाद एक GO की आवश्यकता नहीं है
Rob
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.