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

उपयोगकर्ता कार्यों पर मेटाडेटा ताज़ा करना t-SQL

gbn's answer सबसे अच्छा है - लेकिन जब आपके पास SCHEMABINDING होता है, तो यह अक्सर आपको SCHEMABINDING को हटाए बिना और फिर मॉड्यूल को फिर से बनाते समय इसे बदले बिना अंतर्निहित परिवर्तन करने से रोकता है। यदि आपका ऑब्जेक्ट डेटाबेस के बाहर की वस्तुओं का संदर्भ देता है, तो आप SCHEMABINDING का उपयोग नहीं कर सकते।

यदि यह कठिनाई इतनी अधिक है कि आप SCHEMABINDING का उपयोग नहीं करना चाहते हैं या नहीं कर सकते हैं, तो sp_refreshsqlmodule किसी प्रकार की नियमित प्रक्रिया में, जिसे आप वास्तव में उपयोग किए जाने से पहले त्रुटियों के लिए अपने SQL मॉड्यूल की जाँच करने के लिए चलाते हैं (इसे किसी भी गैर-स्कीमाबाउंड दृश्य, UDF, संग्रहीत खरीद, आदि पर चलाया जा सकता है) आपका मित्र है।

आप दोनों तकनीकों का एक साथ उपयोग कर सकते हैं - आप स्कीमाबाउंड ऑब्जेक्ट्स के विरुद्ध sp_refreshsqlmodule नहीं चला सकते (और इसकी कोई आवश्यकता नहीं है)।

उदाहरण के लिए, आप इसे केवल इन मॉड्यूल पर चला सकते हैं:

SELECT *
FROM    INFORMATION_SCHEMA.ROUTINES
        WHERE   (
                 OBJECTPROPERTY(OBJECT_ID(QUOTENAME(ROUTINE_SCHEMA) + '.' + QUOTENAME(ROUTINE_NAME)), N'IsSchemaBound') IS NULL
                 OR OBJECTPROPERTY(OBJECT_ID(QUOTENAME(ROUTINE_SCHEMA) + '.' + QUOTENAME(ROUTINE_NAME)),
                                   N'IsSchemaBound') = 0
                )


  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 सर्वर त्रुटि 111:"... किसी क्वेरी बैच में पहला कथन होना चाहिए"

  2. यदि पैरामीटर शून्य है तो SQL सभी का चयन करें अन्यथा विशिष्ट आइटम लौटाएं

  3. INSERT पर UNIQUE KEY बाधा का उल्लंघन जहां COUNT(*) =0 SQL सर्वर 2005 पर

  4. एक लॉगिन के लिए डेटाबेस भूमिकाओं/अनुमतियों के साथ सभी उपयोगकर्ता मैपिंग को सूचीबद्ध करने के लिए टी-एसक्यूएल

  5. ExecuteNonQuery:कनेक्शन गुण प्रारंभ नहीं किया गया है।