2011-02-03 17 views
6

अगर मैं एक अस्थायी तालिका # चिह्न का उपयोग बनाने के लिए:जहां temp टेबल स्थित हैं?

SELECT * INTO #temp FROM dbo.table 

कहाँ इस तालिका स्थित है? मैं tempdb से यह नहीं मिल सकता है।

उत्तर

4

उन तालिका आपके tempDB में बनाए गए हैं - लेकिन तालिका का नाम ठीक उसी तरह नहीं हो सकता है जैसा आपने परिभाषित किया था।

मेरे मामले में, मैं मिलता है:

#temp______________________________000000000003 

इस प्रयास करें:

SELECT * INTO #temp FROM dbo.table 
SELECT * FROM tempdb.sys.tables 

आप ही में बनाया गया है कि अस्थायी तालिका के लिए एक प्रवेश देखना चाहिए ....

+3

और परीक्षण करने के लिए, कहते हैं, अस्तित्व के लिए ... object_id ('tempdb .. # अस्थायी') – gbn

1

जब आप एक अस्थायी तालिका घोषित करते हैं, तो SQL सेवर इसके नाम पर कुछ अतिरिक्त वर्ण जोड़ता है ताकि उसके लिए एक अद्वितीय सिस्टम नाम प्रदान किया जा सके और फिर यह इसे tempDB में संग्रहीत करता है ई sysobjects तालिका। भले ही आप अपने तार्किक नाम के साथ अस्थायी तालिका से पूछ सकें, आंतरिक रूप से SQL सर्वर सेट किए गए सटीक नाम के साथ जाना जाता है।

0

आप उन्हें कैसे देख रहे हैं? यदि आप कोई चयन करते हैं तो आपको डेटा प्राप्त होगा। लेकिन तालिका केवल सत्र में उपलब्ध है, केवल उस उपयोगकर्ता के लिए जिसने इसे बनाया है (आपके पास वैश्विक अस्थायी सारणी हो सकती है)।

वे temp डीबी में संग्रहीत हैं।

0

स्थानीय टेम्पलेट टेबल तालिका नाम से पहले हैश (#) चिह्न का उपयोग करके बनाया जा सकता है।

वे केवल वर्तमान कनेक्शन में दिखाई दे रहे हैं। जब कनेक्शन गिरा दिया जाता है तो इसका दायरा भी समाप्त होता है।

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

और पढ़ें

http://sqlnetcode.blogspot.com/2011/11/there-is-already-object-named-temp-in.html

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