यदि आपने कुछ समय के लिए T-SQL का उपयोग किया है, तो संभव है कि आपने sys.objects
का सामना किया हो सिस्टम कैटलॉग व्यू, जो डेटाबेस में उपयोगकर्ता-परिभाषित, स्कीमा-स्कोप्ड ऑब्जेक्ट देता है।
लेकिन इसी तरह के दो अन्य विचार हैं जिनके बारे में आपको जानकारी हो भी सकती है और नहीं भी; sys.system_objects
और sys.all_objects
.
हालांकि समान, उनके अंतर स्पष्ट हैं, और नाम अंतर बताते हैं। तीनों विचारों की आधिकारिक परिभाषा यहां दी गई है:
sys.objects
- प्रत्येक उपयोगकर्ता-परिभाषित, स्कीमा-स्कोप्ड ऑब्जेक्ट के लिए एक पंक्ति होती है जो एक डेटाबेस के भीतर बनाई जाती है।
sys.system_objects
- इसमें SQL सर्वर के साथ शामिल सभी स्कीमा-स्कोप्ड सिस्टम ऑब्जेक्ट के लिए एक पंक्ति है।
sys.all_objects
UNION
दिखाता है सभी स्कीमा-दायरे वाले उपयोगकर्ता-परिभाषित ऑब्जेक्ट और सिस्टम ऑब्जेक्ट।
दूसरे शब्दों में, अंतिम दृश्य पिछले दो दृश्यों के परिणामों को जोड़ता है (यह सिस्टम और . दोनों को लौटाता है उपयोगकर्ता द्वारा परिभाषित वस्तुएं)।
उदाहरण
यहां एक उदाहरण दिया गया है जो इन दृश्यों द्वारा लौटाए गए परिणामों में अंतर दर्शाता है।
USE WideWorldImportersDW; SELECT COUNT(*) AS [sys.objects] FROM sys.objects; SELECT COUNT(*) AS [sys.system_objects] FROM sys.system_objects; SELECT COUNT(*) AS [sys.all_objects] FROM sys.all_objects; SELECT (SELECT COUNT(*) AS [sys.all_objects] FROM sys.all_objects) - (SELECT COUNT(*) AS [sys.system_objects] FROM sys.system_objects) AS [sys.all_objects MINUS sys.system_objects];
परिणाम:
+---------------+ | sys.objects | |---------------| | 224 | +---------------+ (1 row affected) +----------------------+ | sys.system_objects | |----------------------| | 2205 | +----------------------+ (1 row affected) +-------------------+ | sys.all_objects | |-------------------| | 2429 | +-------------------+ (1 row affected)
ये दृश्य मेरे लिए उन्हें यहाँ सूचीबद्ध करने के लिए बहुत सारी पंक्तियाँ लौटाते हैं, इसलिए मैं COUNT()
. का उपयोग कर रहा हूँ पंक्तियों की संख्या वापस करने के लिए जो प्रत्येक लौटाता है।
यदि आप गणित में अच्छे हैं, तो आप जल्दी से देखेंगे कि sys.all_objects
की गिनती sys.objects
. का योग है और sys.system_objects
।
यहाँ एक प्रश्न है जो वह जोड़ देता है।
SELECT (SELECT COUNT(*) AS [sys.objects] FROM sys.objects) + (SELECT COUNT(*) AS [sys.system_objects] FROM sys.system_objects) AS [sys.objects PLUS sys.system_objects];
परिणाम:
+---------------------------------------+ | sys.objects PLUS sys.system_objects | |---------------------------------------| | 2429 | +---------------------------------------+
ध्यान दें कि कैटलॉग दृश्यों में मेटाडेटा की दृश्यता उन प्रतिभूतियों तक सीमित होती है, जिनका उपयोगकर्ता या तो स्वामी होता है या जिस पर उपयोगकर्ता को कुछ अनुमति दी गई होती है।