Ad Hoc Query क्या है?


167

मैं SQL के बारे में एक किताब पढ़ रहा हूँ। उस पुस्तक में Ad Hoc Query शब्द है , जो मुझे समझ में नहीं आता है।

वास्तव में एक तदर्थ क्वेरी क्या है?

जवाबों:


225

"इस उद्देश्य के लिए" तदर्थ लैटिन है। आप इसे "फ्लाई पर" क्वेरी या "बस इतना" क्वेरी कह सकते हैं। यह एसक्यूएल क्वेरी की तरह है जिसमें आप अपनी जरूरत के हिसाब से बस टाइप करते हैं

var newSqlQuery = "SELECT * FROM table WHERE id = " + myId;

... जो प्रत्येक बार कोड की लाइन निष्पादित होने पर एक पूरी तरह से अलग क्वेरी होती है, के मूल्य के आधार पर myId। एक तदर्थ क्वेरी के विपरीत एक पूर्वनिर्धारित क्वेरी है जैसे कि संग्रहीत प्रक्रिया, जहां आपने उस तालिका (कहने) से चयन करने के पूरे सामान्यीकृत उद्देश्य के लिए एक एकल क्वेरी बनाई है, और आईडी को एक चर के रूप में पास करें।


17
@ डेविड हडलुंड आपकी क्वेरी कमजोर है SQL injection attacks... आपको पैरामीटर का उपयोग करना चाहिए।
Parid0kht

45
@Paridokht: निश्चित रूप से। मैं उस उपयोग की वकालत नहीं कर रहा हूँ, मैं एक तदर्थ क्वेरी की अवधारणा को समझा रहा हूँ, जो कि प्रश्न था।
डेविड हेडलंड

12
@DavidHedlund: हां, मैं समझता हूं..लेकिन आपके उत्तर में इसका उल्लेख करना बेहतर हो सकता है क्योंकि ऐसे उपयोगकर्ता हैं जो इसे पढ़ते हैं और इस हमले का कोई अंदाजा नहीं रखते हैं।
Parid0kht

46
यदि कोई उपयोगकर्ता इसे पढ़ता है और SQL इंजेक्शन के बारे में विचार नहीं करता है, तो वे ऐसी किसी भी चीज़ पर काम नहीं कर रहे हैं जो हैकर के हित में हो सकती है। आइए चरम सीमा पर न जाएं ...
मिशाल बी।

7
अब वर्षों के अनुभव के साथ एक डेवलपर के रूप में, मैं बहुत सी चीजें सीख रहा हूं, जबकि मैं जो कुछ भी देख रहा हूं, उससे पूरी तरह से अलग है। तो IMHO एक वाक्य को 'जैसे ही जोड़ रहा है ... आवश्यक नियंत्रण करना न भूलें और यहाँ myId के लिए स्वच्छता ' कोई नुकसान नहीं पहुंचाएगा।
डरावना

24

Ad-Hoc Query एक क्वेरी है जिसे क्वेरी जारी किए जाने से पहले निर्धारित नहीं किया जा सकता है। यह जरूरत पड़ने पर सूचना प्राप्त करने के लिए बनाई गई है और इसमें गतिशील रूप से निर्मित एसक्यूएल है जो आमतौर पर डेस्कटॉप-निवासी क्वेरी टूल्स द्वारा निर्मित होता है।

जाँच करें: http://www.learn.geekinterview.com/data-warehouse/dw-basics/what-is-an-ad-hoc-query.html


इसलिए यदि मैं एक स्थिर क्वेरी टाइप करता हूं और इसे एक बार चलाता हूं, तो यह "तदर्थ" नहीं है?
जंमोज़ोज़ी

1

यह भी जोड़ना चाहते हैं कि तदर्थ क्वेरी SQL इंजेक्शन हमलों के लिए असुरक्षित है। हमें इसके उपयोग से बचने और इसके बजाय पैरामीटर किए गए SQLs का उपयोग करने की कोशिश करनी चाहिए ( जैसे Java में ReadyedStatement )।


7
एक तदर्थ क्वेरी SQL इंजेक्शन के लिए असुरक्षित नहीं है। उपयोगकर्ता के इनपुट को स्वीकार करने वाली एक अवांछित क्वेरी SQL इंजेक्शन के लिए असुरक्षित है।
बेन

@ फिर भी एक तदर्थ क्वेरी हमेशा अपरिवर्तित होती है। यदि हम उपयोगकर्ताओं के लिए चर को उजागर नहीं करते हैं तो यह SQL इंजेक्शन पर हमला नहीं कर सकता है; लेकिन बिंदु एड-हॉक क्वेरी SQL इंजेक्शन के लिए जोखिम भरा है।
15

1

Ad-Hoc Query एक क्वेरी है जिसे क्वेरी जारी किए जाने से पहले निर्धारित नहीं किया जा सकता है। यह जरूरत पड़ने पर सूचना प्राप्त करने के लिए बनाई गई है और इसमें गतिशील रूप से निर्मित एसक्यूएल है जो आमतौर पर डेस्कटॉप-निवासी क्वेरी टूल्स द्वारा निर्मित होता है। एक तदर्थ क्वेरी कंप्यूटर या डेटाबेस प्रबंधक में नहीं रहती है, लेकिन डेटा उपयोगकर्ता की जरूरतों के आधार पर गतिशील रूप से बनाई जाती है।

SQL में, एक तदर्थ क्वेरी एक ढीला टाइप कमांड / क्वेरी है जिसका मूल्य कुछ चर पर निर्भर करता है। हर बार जब कमांड को निष्पादित किया जाता है, तो परिणाम भिन्न होता है, जो चर के मूल्य पर निर्भर करता है। यह पूर्व निर्धारित नहीं किया जा सकता है और आमतौर पर गतिशील प्रोग्रामिंग SQL क्वेरी के अंतर्गत आता है। एक तदर्थ क्वेरी अल्पकालिक है और रनटाइम पर बनाई गई है।


1

डीबी सर्वर पर उपलब्ध किसी या कई मर्ज किए गए तालिकाओं से एक विशिष्ट रिकॉर्डसेट प्रदान करने के लिए एक ऐड-हॉक क्वेरी बनाई गई है। ये प्रश्न आमतौर पर एकल-उपयोग के उद्देश्य को पूरा करते हैं, और भविष्य में फिर से चलाने के लिए किसी भी संग्रहीत प्रक्रिया में शामिल करने के लिए आवश्यक नहीं हो सकता है।

तदर्थ परिदृश्य : आपको चर के एक विशिष्ट सेट के साथ डेटा के एक विशिष्ट सबसेट के लिए अनुरोध प्राप्त होता है। यदि कोई पूर्व-लिखित क्वेरी नहीं है जो आवश्यक परिणाम प्रदान कर सकती है, तो आपको रिकॉर्ड परिणाम उत्पन्न करने के लिए Ad-hoc क्वेरी लिखनी होगी।

एकल उपयोग से परे Ad-hoc क्वेरी संग्रहीत कार्यविधियाँ हैं ; यानी क्वेरीज़ जो DB इंटरफ़ेस टूल में संग्रहीत हैं। फिर इन संग्रहीत प्रक्रियाओं को एक मॉड्यूल या मैक्रो के भीतर अनुक्रम में निष्पादित किया जा सकता है, पूर्वनिर्धारित कार्य को पूरा करने के लिए या तो मांग पर, एक शेड्यूल पर, या किसी अन्य ईवेंट द्वारा ट्रिगर किया गया।

संग्रहीत कार्यविधि परिदृश्य : हर महीने आपको तालिकाओं के एक ही सेट से और समान चर के साथ एक रिपोर्ट उत्पन्न करने की आवश्यकता होती है (ये चर विशिष्ट पूर्वनिर्धारित मूल्य, "वर्तमान माह के अंत" या उपयोगकर्ता के इनपुट मूल्यों जैसे गणना किए जा सकते हैं)। आपने पहली बार एक तदर्थ क्वेरी के रूप में प्रक्रिया बनाई होगी। सटीकता सुनिश्चित करने के लिए परिणामों का परीक्षण करने के बाद, आप इस क्वेरी को तैनात करना चुन सकते हैं। फिर आप एक मॉड्यूल या मैक्रो में क्वेरी या श्रृंखला की क्वेरी को आवश्यकतानुसार फिर से चलाने के लिए स्टोर करेंगे।


0

तदर्थ प्रश्न वे होते हैं जो पहले से परिभाषित नहीं होते हैं जिनकी नियमित आधार पर आवश्यकता नहीं होती है, इसलिए वे रिपोर्ट या प्रश्नों के विशिष्ट सेट में शामिल नहीं होते हैं


क्या आप बता सकते हैं कि आप और क्या लिख ​​रहे हैं? "विशिष्ट सेट" क्या है; क्या आपका मतलब है संकलित कोड?
बेन

0

Ad-hoc Statments सिर्फ T-SQL स्टेटमेंट है कि इसमें एक कहां क्लॉज है, और कहां क्लॉज वास्तविक रूप से हो सकता है जैसे:

Select * from member where member_no=285;

या एक चर:

declare @mno INT=285;
Select * from member where member_no=@mno

-4

एक तदर्थ प्रश्न है:

  1. पूर्व नियोजित प्रश्न।
  2. पूर्व निर्धारित प्रश्न।
  3. सवाल का पल।
  4. प्रश्न जो कोई परिणाम नहीं देगा।

SQL के संदर्भ में इसका क्या अर्थ है? इसके अलावा, सभी "प्रश्न जो किसी भी परिणाम को वापस नहीं करेंगे।" विज्ञापन होक्स हैं।
जंमोज़ोज़ी

-5

Ad hoc query कंप्यूटर की परिभाषा का प्रकार है। इसका मतलब है कि यह क्वेरी किसी भी जानकारी को प्राप्त करने के लिए विशेष रूप से डिज़ाइन है जब यह केवल आवश्यक हो। पूर्वनिर्धारित। इसे देखें https://www.youtube.com/watch?v=0c8JEKmVXhU


1
मुझे लगता है कि "पूर्वनिर्धारित" "तदर्थ" के विपरीत है।
जंमोज़ोज़ी

-6

Sql Server में "Ad Hoc Query" का उपयोग Ad Hoc Distributed Queries के लिए भी किया जाता है। ये OpenRowset या OpenDatasource के माध्यम से किसी अन्य सर्वर पर तदर्थ प्रश्न हैं। ऐड हॉक डिस्ट्रिब्यूटेड क्वेरीज़ को कॉन्फ़िगर करने के बाद ही अनुमति दी जाती है। यह एक सर्वर कॉन्फ़िगरेशन विकल्प है।


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