2011-08-31 10 views
10

में अस्थायी सारणी मैं एसक्यूएल सर्वर में अस्थायी तालिकाओं के निर्माण पर काम कर रहा हूं। मैंने अस्थायी तालिका सफलतापूर्वक बनाई लेकिन जब मैं डेटा देखने की कोशिश करता हूं तो यह INVALID ऑब्जेक्ट नाम कहता है। क्या कोई दुश्मन बता सकता है कि कितनी देर तक अस्थायी सारणी मौजूद है? यदि मैं sql सर्वर पर userid - devloper और pwd = 0999 के रूप में लॉग ऑन हूं और कुछ अन्य व्यक्ति समान प्रमाणपत्र वाले SQL सर्वर पर भी लॉग ऑन हैं, तो यह अस्थायी तालिका हटा दी जाएगी? मेरी एसक्यूएल इस प्रकार है:एसक्यूएल सर्वर

SELECT net_node_model.SYS_ID, net_node_model.NODE, mst_temp_equation.TEMP_ID, 
     mst_temp_equation.EQ_ID 
INTO ##NT_MASTER_TEMP_EQUATION 
FROM mst_temp_equation INNER JOIN 
    net_node_model ON mst_temp_equation.TEMP_ID = net_node_model.TEMP_ID 
GROUP BY net_node_model.SYS_ID, net_node_model.NODE, mst_temp_equation.TEMP_ID, 
     mst_temp_equation.EQ_ID, mst_temp_equation.EQ_NAME, 
     mst_temp_equation.EQ_TYPE, mst_temp_equation.[OBJECT], 
     mst_temp_equation.VAR_TYPE, mst_temp_equation.VAR_NAME, 
     mst_temp_equation.VAR_SUBSET, mst_temp_equation.VAR_SET, 
     mst_temp_equation.RHS_RELN, mst_temp_equation.RHS_OBJECT, 
     mst_temp_equation.RHS_VAR_SET, mst_temp_equation.RHS_VAR_SUBSET, 
     mst_temp_equation.RHS_VAR_TYPE, mst_temp_equation.RHS_VAR_NAME, 
     mst_temp_equation.EQ_TP_OFFSET, mst_temp_equation.RHS_TP_OFFSET, 
     mst_temp_equation.RETAIN, mst_temp_equation.TIME_PRD, 
     mst_temp_equation.EQ_VAR_SUBTYPE, mst_temp_equation.RHS_VAR_SUBTYE; 
+1

क्या आप जिस SQL ​​का उपयोग कर रहे हैं उसे पोस्ट कर सकते हैं? –

उत्तर

17

आप एक नियमित अस्थायी तालिका #table का उपयोग कर रहे हैं, तो यह दिखाई नहीं किसी अन्य सत्र के लिए अलग से एक उस पर बनाए जाने के बाद किया जाएगा। एक बार वह सत्र समाप्त हो जाने के बाद, तालिका हटा दी जाएगी।

यदि आप वैश्विक अस्थायी तालिका ##table का उपयोग कर रहे हैं, तो यह अन्य सत्रों के लिए दृश्यमान होगा।

MSDN से - CREATE TABLE, temporary tables के तहत:

वैश्विक अस्थायी तालिकाओं स्वचालित रूप से जब सत्र कि तालिका समाप्त होता है बनाया है और सभी अन्य कार्यों के लिए उन्हें संदर्भित बंद कर दिया है गिरा दिया जाता है।

+0

मुझे यकीन नहीं है कि मैं # या ## का उपयोग करता हूं, यदि मैं चुनिंदा क्वेरी का उपयोग करके अपनी tem तालिका से रिकॉर्ड्स का चयन करने का प्रयास करता हूं तो यह कहता है कि INVALID OBJECT NAME – CPDS

+0

@ us111 - यदि सत्र बनाया गया था तो समाप्त हो गया था और तालिका का संदर्भ नहीं दिया गया है कोई अन्य चल रहे कार्यों, यह स्वचालित रूप से गिरा दिया जाएगा। – Oded

+0

मैंने सत्र बंद नहीं किया है ... मैं कुछ परीक्षण कर रहा हूं इसलिए पहले मैं संग्रहीत प्रक्रिया 1 चलाता हूं जो temp table1 बनाता है और फिर तुरंत मैं चयनित क्वेरी निष्पादित करने का प्रयास करता हूं जो रिकॉर्ड इनवॉलिड ऑब्जेक्ट नाम कहता है। – CPDS

0

क्या आप कह रहे हैं कि आपने पहले ही ## NT_MASTER_TEMP_EQUATION तालिका बनाई है, और अब इसमें शामिल करने की कोशिश कर रहे हैं? यदि ऐसा है, तो आपके पास क्या है इसके बजाय वाक्यविन्यास INSERT INTO ##NT_MASTER_TEMP_EQUATION SELECT ... का उपयोग करें।

SELECT ... INTO ##temp FROM ... दोनों तालिका बनाने और इसे पॉप्युलेट करने के लिए उपयोग किया जाता है।


साथ ही, आप (सिर्फ कीवर्ड INTO से पहले) अपने SELECT सूची के अंत में एक दुष्ट , है। इसे हटा दिया जाना चाहिए।

+0

',' टाइपो है ... इसकी वास्तविक क्वेरी में नहीं है। हां, मैं तालिका में रिकॉर्ड बना रहा हूं और डालने जा रहा हूं। – CPDS

0

इस सटीक क्वेरी आप का इस्तेमाल किया है, तो मुझे लगता है कि आप पहली पंक्ति पर एक सिंटैक्स त्रुटि हो सकता है, लगता है कि सही कीवर्ड से पहले INTO

...mst_temp_equation.EQ_ID, INTO ##NT_MASTER_TEMP_EQUATION 
         ^

सुनिश्चित नहीं हैं कि इस करता है, तो एक अतिरिक्त अल्पविराम है की तरह INVALID ऑब्जेक्ट NAME त्रुटि उत्पन्न कर रहा है या नहीं

+0

क्षमा करें वहाँ एक टाइपो है EQ_ID के बाद कोई ',' नहीं है – CPDS

संबंधित मुद्दे