Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में sys.objects, sys.system_objects और sys.all_objects के बीच अंतर

यदि आपने कुछ समय के लिए 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                                  |
+---------------------------------------+

ध्यान दें कि कैटलॉग दृश्यों में मेटाडेटा की दृश्यता उन प्रतिभूतियों तक सीमित होती है, जिनका उपयोगकर्ता या तो स्वामी होता है या जिस पर उपयोगकर्ता को कुछ अनुमति दी गई होती है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में CAST () कैसे काम करता है

  2. मल्टी डायमेंशन OLAP CUBE क्या है और 3 से ज्यादा डायमेंशन वाले क्यूब का उदाहरण दें

  3. अपने SQL सर्वर के प्रदर्शन को नुकसान पहुँचाने वाले गतिविधि मॉनिटर से कैसे बचें

  4. Linux से Microsoft SQL सर्वर तक पहुँचने के कुछ तरीके क्या हैं?

  5. SQL सर्वर में सम्मिलन के क्रम को कैसे बनाए रखें