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

SQL सर्वर में एक टेबल एक सिस्टम टेबल है या नहीं यह पता लगाने के लिए OBJECTPROPERTY() का उपयोग करें

OBJECTPROPERTY() SQL सर्वर में फ़ंक्शन आपको किसी विशिष्ट प्रॉपर्टी के लिए किसी ऑब्जेक्ट की जांच करने में सक्षम बनाता है।

आप इस फ़ंक्शन का उपयोग यह जांचने के लिए कर सकते हैं कि कोई ऑब्जेक्ट सिस्टम टेबल है या नहीं। ऐसा करने के लिए, ऑब्जेक्ट आईडी को पहले तर्क के रूप में पास करें, और IsSystemTable दूसरे तर्क के रूप में। फ़ंक्शन एक 1 देता है या एक 0 इस पर निर्भर करता है कि यह सिस्टम टेबल है या नहीं (1 इसका मतलब है कि यह है एक सिस्टम टेबल, और 0 इसका मतलब है कि यह नहीं है)।

उदाहरण 1 - मूल उपयोग

प्रदर्शित करने के लिए यहां एक त्वरित उदाहरण दिया गया है।

SELECT OBJECTPROPERTY(3, 'IsSystemTable') AS [IsSystemTable];

परिणाम:

+-----------------+
| IsSystemTable   |
|-----------------|
| 1               |
+-----------------+

इस मामले में, वस्तु है एक सिस्टम टेबल।

उदाहरण 2 - ऑब्जेक्ट सिस्टम टेबल नहीं है

यहां बताया गया है कि जब ऑब्जेक्ट सिस्टम टेबल नहीं होता है तो क्या होता है।

SELECT OBJECTPROPERTY(1013578649, 'IsSystemTable') AS [IsSystemTable];

परिणाम:

+-----------------+
| IsSystemTable   |
|-----------------|
| 0               |
+-----------------+

इस मामले में, डेटाबेस करता है वास्तव में उस आईडी के साथ एक वस्तु है, लेकिन वस्तु वास्तव में एक उपयोगकर्ता द्वारा परिभाषित तालिका है, इसलिए मुझे एक नकारात्मक परिणाम मिलता है।

यहां यह फिर से OBJECT_ID() का उपयोग कर रहा है वस्तु के नाम से आईडी प्राप्त करने के लिए।

SELECT 
  OBJECT_ID('Dimension.City') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsSystemTable') AS [IsSystemTable],
  OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsUserTable') AS [IsUserTable];

परिणाम:

+-------------+-----------------+---------------+
| Object ID   | IsSystemTable   | IsUserTable   |
|-------------+-----------------+---------------|
| 1013578649  | 0               | 1             |
+-------------+-----------------+---------------+

मैंने यह देखने के लिए भी जाँच की कि क्या वस्तु एक उपयोगकर्ता द्वारा परिभाषित तालिका है, और परिणाम सकारात्मक है।

उदाहरण 3 - वस्तु मौजूद नहीं है

SQL सर्वर मानता है कि ऑब्जेक्ट आईडी वर्तमान डेटाबेस संदर्भ में है। यदि आप किसी भिन्न डेटाबेस से ऑब्जेक्ट आईडी पास करते हैं, तो आपको या तो एक पूर्ण परिणाम मिलेगा या आपको गलत परिणाम मिलेंगे।

SELECT 
  OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'IsSystemTable') AS [InvalidObject],
  OBJECTPROPERTY(12345678, 'IsSystemTable') AS [12345678];

परिणाम:

+-----------------+------------+
| InvalidObject   | 12345678   |
|-----------------+------------|
| NULL            | NULL       |
+-----------------+------------+

इस मामले में डेटाबेस में उस नाम या आईडी की कोई वस्तु नहीं है, और इसलिए मुझे एक पूर्ण परिणाम मिलता है।

त्रुटि होने पर या यदि आपके पास ऑब्जेक्ट देखने की अनुमति नहीं है, तो आपको NULL भी मिलेगा।


  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 सर्वर तुलना ऑपरेटरों की सूची

  2. R DBI ODBC त्रुटि:nanodbc/nanodbc.cpp:3110:07009:[Microsoft] [SQL सर्वर के लिए ODBC ड्राइवर 13] अमान्य डिस्क्रिप्टर इंडेक्स

  3. क्या आप इन मेट्रिक्स के साथ SQL सर्वर के प्रदर्शन को माप रहे हैं?

  4. क्या LINQ के साथ पूर्ण पाठ खोज (FTS) का उपयोग करना संभव है?

  5. यादृच्छिक int मान 3 से 6 . उत्पन्न करें