निम्न क्वेरी कोई परिणाम और एसक्यूएल सर्वर 2008 (SP1 पर परीक्षण) पर कोई त्रुटि है, तो आप भी मास्टर किसी भी डेटाबेस के खिलाफ चला सकते हैं रिटर्न:SQL सर्वर चयन क्वेरी में ब्रांड्स की भूमिका?
WITH computed_table (id) AS
(
SELECT id FROM this_table_does_not_exist
)
(SELECT * FROM computed_table)
UNION
(SELECT * FROM another_table_that_does_not_exists)
SQL सर्वर 2005 पर, आप कोई त्रुटि मिलती है क्योंकि टेबल मौजूद नहीं है।
WITH computed_table (id) AS
(
SELECT id FROM this_table_does_not_exist
)
SELECT * FROM computed_table
UNION
(SELECT * FROM another_table_that_does_not_exists)
समस्याओं का एक ही तरह असली तालिकाओं के साथ प्रकट होता है:: आप मिल भी अगर आप कुछ कोष्ठकों को दूर कोई त्रुटि मिलती है कुछ अवसरों पर, क्वेरी किसी भी परिणाम वापस नहीं करता है, और यदि आप कुछ कुछ मामूली परिवर्तन कर , एक जगह या कैरिज रिटर्न को हटाने की तरह, यह फिर से काम करता है ...
मुझे लगता है कि क्वेरी में कोई समस्या हो सकती है, क्योंकि कोष्ठक में संलग्न चयन को सबक्वायरी के बजाय अभिव्यक्ति के रूप में व्याख्या किया जा सकता है this page में। लेकिन कम से कम एक त्रुटि वापस करना चाहिए।
क्या मुझे कुछ याद आ रही है?
संपादित करें 26/06/2010: मैंने निम्नलिखित परिणामों के साथ कुछ प्रोफाइलिंग सत्र चलाए।
ऊपर प्रश्न के लिए घटनाओं के अनुक्रम है:
- अपवाद (त्रुटि: 208, अमान्य ऑब्जेक्ट नाम)
- एसक्यूएल: BatchStarting
- एसक्यूएल: StmtStarting
- एसक्यूएल: BatchCompleted
बिना किसी अनुबंध के क्वेरी के लिए:
- अपवाद (त्रुटि: 208)
- एसक्यूएल: BatchStarting
- एसक्यूएल: StmtStarting
- अपवाद (त्रुटि: 208)
- उपयोगकर्ता त्रुटि संदेश (अमान्य ऑब्जेक्ट नाम 'this_table_does_not _exist')
- एसक्यूएल : BatchCompleted
एक काम क्वेरी के लिए:
- एसक्यूएल: BatchStarting
- एसक्यूएल: StmtStarting
- Showplan सभी
- एसक्यूएल: StmtCompleted
- एसक्यूएल: BatchCompleted
मैं भी भाग गया है कि मुझे एक ही पैदा असली तालिकाओं के साथ प्रश्नों में से एक मुद्दा।घटनाओं के अनुक्रम है:
- एसक्यूएल: BatchStarting
- एसक्यूएल: StmtStarting
- एसक्यूएल:
BatchCompleted कोई जल्दी "अपवाद" => टेबल मौजूद हैं। नहीं "एसक्यूएल: StmtCompleted" => इसका मतलब है कि एक त्रुटि हुई, मैं किसी अन्य कारण को नहीं देख सका कि यह घटना क्यों नहीं उठाई जाएगी। नहीं "सभी दिखाएं" => इसका मतलब है कि त्रुटि (या कब) निष्पादन योजना की गणना की जाती है। यह सीटीई और कोष्ठक के संयोजन के कारण हो सकता है।
मैं अगले हफ्ते माइक्रोसॉफ्ट समर्थन के साथ इस मुद्दे को उठाऊंगा।
क्या आपने चयनित कॉलम को वास्तविक कॉलम नाम बदलने की कोशिश की है? – DForck42
क्या एक अद्भुत सवाल है! सबसे पहले, 2008 में, आपको दूसरे कथन पर भी त्रुटियां मिलती हैं। साथ ही, मुझे नहीं लगता कि यूनियन स्टेटमेंट के पास अजीब व्यवहार के साथ कुछ भी करने के लिए यूनियन को हटाने और दूसरा चयन परिणाम बदलने में प्रतीत नहीं होता है। एक दिलचस्प बात - पहली कथन का उपयोग करते समय, और अनुमानित निष्पादन योजना के लिए पूछते हुए, मुझे कोई योजना वापस नहीं मिलती है। मैं अब एक निशान चलाने वाला हूँ। बाद में बात करता हूं। – MaasSql
क्या आप इस कोड को भी पोस्ट करेंगे: "मैंने वास्तविक तालिकाओं के साथ एक प्रश्न भी चलाया जो मुझे एक ही मुद्दा बना रहा है।" इसके अलावा, शुद्ध जिज्ञासा से, क्या आप इसे अवरोधक के रूप में विकास/उत्पादन के मुद्दे के रूप में पेश कर रहे हैं? यदि ऐसा है, ऐसा लगता है कि वर्कअराउंड सीटीई, फिर कंस्ट्रैसिस पैटर्न का पालन नहीं करना होगा। – MaasSql