SQL सर्वर में, @ तालिका, # तालिका और ## तालिका के बीच क्या अंतर है?
SQL सर्वर में, @ तालिका, # तालिका और ## तालिका के बीच क्या अंतर है?
जवाबों:
#table एक स्थानीय को संदर्भित करता है (केवल उस उपयोगकर्ता को दिखाई देता है जिसने इसे बनाया है) अस्थायी तालिका।
##table एक वैश्विक (सभी उपयोगकर्ताओं के लिए दृश्यमान) अस्थायी तालिका को संदर्भित करता है।
@variableName एक चर को संदर्भित करता है जो अपने प्रकार के आधार पर मूल्यों को पकड़ सकता है।
#और ##टेम्प्स डेटाबेस में दर्शाई गई टेबल वास्तविक टेबल हैं। इन तालिकाओं में अनुक्रमित और आँकड़े हो सकते हैं, और एक सत्र में स्प्रोक्स तक पहुँचा जा सकता है (वैश्विक अस्थायी तालिका के मामले में, यह सत्रों में उपलब्ध है)।
@ तालिका तालिका चर है।
अधिक के लिए: http://www.sqlteam.com/article/temporary-tables
मैं #table और @table के बीच के अंतरों पर ध्यान केंद्रित करूँगा। ## तालिका एक वैश्विक अस्थायी तालिका है और SQL सर्वर I का उपयोग करने के 10 वर्षों में रिकॉर्ड के लिए मुझे अभी तक एक वैध उपयोग के मामले में आना है। मुझे यकीन है कि कुछ मौजूद हैं लेकिन वस्तु की प्रकृति इसे अत्यधिक अनुपयोगी IMHO बनाती है।
@Marc_s द्वारा @whiner की प्रतिक्रिया बिल्कुल सच है: यह एक प्रचलित मिथक है कि टेबल चर हमेशा स्मृति में रहते हैं। यह वास्तव में एक टेबल चर के लिए डिस्क पर जाने और एक अस्थायी तालिका की तरह संचालित करने के लिए काफी आम है।
वैसे भी मेरा सुझाव है कि @Astander द्वारा बताए गए लिंक का अनुसरण करके मतभेदों के सेट पर पढ़ना। अंतर के अधिकांश में उन सीमाओं को शामिल किया गया है जो आप @table चर के साथ नहीं कर सकते हैं।
CREATE TABLE #t
एक ऐसी तालिका बनाता है जो केवल उस पर दिखाई देती है और उस कनेक्शन के दौरान वही उपयोगकर्ता जो दूसरा कनेक्शन बनाता है, वह दूसरे कनेक्शन से तालिका #t नहीं देख पाएगा।
CREATE TABLE ##t
अन्य कनेक्शन के लिए दिखाई देने वाली एक अस्थायी तालिका बनाता है। लेकिन निर्माण कनेक्शन समाप्त होने पर तालिका को गिरा दिया जाता है।
SqlConnection.Open()साथ ही कनेक्शन स्ट्रिंग है एक ही कनेक्शन ?