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

SQL सर्वर में एक स्कीमा बाउंड संग्रहीत कार्यविधि कैसे बनाएँ?

यदि आपने कभी एक स्कीमा बाउंड UDF बनाया है, तो आपको पता चल जाएगा कि स्कीमा बाइंडिंग यह केवल WITH SCHEMABINDING जोड़ने की बात है। आपकी परिभाषा के लिए। जब आप स्कीमा बाउंड व्यू बनाते हैं तो यही बात लागू होती है।

संग्रहित प्रक्रियाएं थोड़ी अलग हैं।

केवल मूल रूप से संकलित संग्रहीत कार्यविधियाँ स्कीमा बाध्य हो सकती हैं। वास्तव में, मूल रूप से संकलित संग्रहीत कार्यविधियाँ जरूरी स्कीमा बाध्य हो। आप स्कीमा को बाध्य किए बिना मूल रूप से संकलित संग्रहीत कार्यविधि नहीं बना सकते।

लेकिन अगर आप एक नियमित (गैर-मूल रूप से संकलित) प्रक्रिया को स्कीमा बाँधने का प्रयास करते हैं, तो आपको एक त्रुटि मिलेगी।

स्कीमा बाध्य संग्रहीत कार्यविधि का उदाहरण

यहां एक स्कीमा बाउंड (मूल रूप से संकलित) संग्रहीत कार्यविधि बनाने का एक उदाहरण दिया गया है।

क्रिएट प्रोसीजर dbo.usp_GetCowsByName @cowname varchar(70)SCHEMABINDING के साथ, NATIVE_COMPILATIONASBEGIN ATOMIC with (लेन-देन अलगाव स्तर =स्नैपशॉट, भाषा =N'us_english Cow., ROM @WWcoName =N'us_english Cow, ROM @WWcoName /पूर्व> 

मैंने WITH SCHEMABINDING . शामिल किया है तर्क, लेकिन मैंने NATIVE_COMPILATION . भी शामिल किया है , जो इंगित करता है कि प्रक्रिया मूल रूप से संकलित है।

ATOMIC WITH पर भी ध्यान दें खंड मैथा। यह मूल रूप से संकलित संग्रहीत कार्यविधियों के लिए आवश्यक है।

इस कोड ने एक स्कीमा बाध्य संग्रहित प्रक्रिया बनाई।

त्रुटि? इन पूर्वापेक्षाओं की जाँच करें

मूल रूप से संकलित संग्रहीत कार्यविधियों के लिए आवश्यक है कि कोई भी अंतर्निहित तालिकाएँ स्मृति-अनुकूलित तालिकाएँ हों।

स्मृति-अनुकूलित तालिकाएँ बनाने के लिए, आपको पहले एक स्मृति-अनुकूलित फ़ाइल समूह बनाना होगा।

यहाँ वह कोड है जिसका उपयोग मैंने स्मृति-अनुकूलित फ़ाइल समूह, उसकी संबद्ध फ़ाइल और स्मृति-अनुकूलित तालिका बनाने के लिए किया था जिसे मैं संग्रहीत प्रक्रिया में संदर्भित करता हूँ:

डेटाबेस परीक्षण में फ़ाइल जोड़ें [गाय] ([गाय आईडी] [int] पहचान (1,1) गैर प्राथमिक प्राथमिक कुंजी नहीं, [गायनाम] [वर्चर] (70) नल, [फोन] [वर्कर] (10) नल) के साथ (मेमोरी_ऑप्टिमाइज्ड =चालू) , DURABILITY =SCHEMA_AND_DATA)GO

इसलिए यदि आप मेरे कोड को कॉपी और पेस्ट करना चाहते हैं, तो आपको इसे पहले चलाना होगा, फिर ऊपर संग्रहीत प्रक्रिया कोड को चलाना होगा।

यह भी ध्यान दें कि मैं लिनक्स के लिए SQL सर्वर का उपयोग कर रहा हूं, और इसलिए फ़ाइल पथ लिनक्स सम्मेलनों का उपयोग करते हैं। यदि आप विंडोज़ पर डेटाबेस फ़ाइल बना रहे हैं, तो आपको विंडोज़ फ़ाइल पथ सम्मेलन का उपयोग करने के लिए इसे बदलना होगा (और अपने सिस्टम पर मौजूद फ़ाइल पथ का उपयोग करना सुनिश्चित करें)।


  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 सर्वर इंस्टेंस पर सभी डेटाबेस से प्राथमिक कुंजी बाधा की सूची कैसे प्राप्त करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 60

  2. SQL सर्वर में तालिका नाम का नाम कैसे बदलें

  3. Salesforce SOQL के साथ SQL सर्वर का उपयोग करने के लिए युक्तियाँ

  4. SQL सर्वर में किसी पहचान कॉलम पर वर्तमान पहचान मान वापस करने के लिए IDENT_CURRENT() का उपयोग करें

  5. आप किसी तालिका के कॉलम नाम कैसे वापस करते हैं?