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

Windows Azure SQL डेटाबेस - पहचान स्वतः वृद्धि स्तंभ मानों को छोड़ देता है

अगर आपको इन कमियों को खत्म करने की जरूरत है, तो आप यहां भाग्य से बाहर हो सकते हैं।

मैंने इस मुद्दे को स्वयं मारा क्योंकि मैं एक नया एप्लिकेशन विकसित/परीक्षण कर रहा हूं। मैं एसक्यूएल सर्वर 2012 के बारे में जो पढ़ा है उसके आधार पर एसक्यूएल एज़ूर में यहां क्या हो रहा है, मैं समझ रहा हूं। मुझे एसक्यूएल एज़ूर के लिए इसके बारे में कोई दस्तावेज नहीं मिला है।

मैंने जो पढ़ा है उससे यह एक ऐसी सुविधा है जो बग आईएमओ के रूप में सामने आती है। Sql सर्वर 2012 में Microsoft ने सीक्वेंस बनाने की क्षमता जोड़ी। अनुक्रम रिकॉर्ड करते हैं कि 1000 के ब्लॉक में किन मानों का उपयोग किया गया है। तो मान लें कि आपका अनुक्रम प्रगति कर रहा था... 1, 2, 3, 4, 5... और फिर आपका sql सर्वर पुनरारंभ होता है। खैर अनुक्रम ने पहले ही इस तथ्य को बचा लिया है कि ब्लॉक 1-1000 का पहले ही उपयोग किया जा चुका है, इसलिए यह आपको अगले 1000 तक ले जाता है .... इसलिए आपका अगला मान 1001, 1002, 1003, 1004 है .... इससे प्रदर्शन में सुधार होता है अनुक्रमों का उपयोग करते समय सम्मिलित करता है, लेकिन इसके परिणामस्वरूप असामान्य अंतराल हो सकते हैं। आपके अनुक्रम के लिए इसका समाधान है। अनुक्रम निर्दिष्ट करते समय "NOCACHE" पैरामीटर जोड़ें ताकि यह एक बार में 1000 के ब्लॉक को सहेज न सके। अधिक दस्तावेज़ीकरण के लिए यहां देखें।

जहां यह एक मुद्दा बन जाता है कि आइडेंटिटी कॉलम को इसी प्रतिमान का उपयोग करने के लिए बदल दिया गया है। तो जब आपका सर्वर, या इस मामले में आपका एसक्यूएल एज़ूर इंस्टेंस पुनरारंभ होता है तो आप अपने पहचान कॉलम में बड़े अंतराल (1000) प्राप्त कर सकते हैं क्योंकि यह बड़े ब्लॉक को "प्रयुक्त" के रूप में कैशिंग कर रहा है। एसक्यूएल सर्वर 2012 के लिए इसका एक समाधान है। आप पुराने एसक्यूएल सर्वर 2008 आर 2 प्रतिमान का उपयोग करने के लिए अपनी पहचान वापस करने के लिए स्टार्टअप फ्लैग t272 निर्दिष्ट कर सकते हैं। समस्या यह है कि मैं अनजान हूं (यह संभव नहीं हो सकता है) एसक्यूएल एज़ूर में इसे कैसे निर्दिष्ट किया जाए। दस्तावेज नहीं मिल रहा है। यह धागा देखें sql सर्वर 2012 पर अधिक जानकारी के लिए।

पहचान के दस्तावेज़ यहां एमएसडीएन में देखें। विशेष रूप से खंड "सर्वर पुनरारंभ या अन्य विफलताओं के बाद लगातार मान"। यहाँ यह कहा गया है:

इसलिए यदि आपको लगातार मान रखने की आवश्यकता है तो आप अपने पहचान कॉलम पर भरोसा करने के बजाय nocache के साथ अनुक्रम निर्दिष्ट करने का प्रयास कर सकते हैं। मैंने इसे स्वयं नहीं आजमाया, लेकिन ऐसा लगता है कि आपको इसे एंटिटी फ्रेमवर्क के साथ काम करने में परेशानी होगी।

क्षमा करें अगर इससे बहुत मदद नहीं मिलती है, लेकिन कम से कम यह आपके अनुभव के बारे में कुछ जानकारी है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक कॉलम (टी-एसक्यूएल) में एकाधिक मान कैसे वापस करें?

  2. मैं SQL Server 2008R2 डेटाबेस में Excel स्प्रेडशीट कैसे आयात करूं?

  3. NHibernate के साथ SQL Server 2008 से TIME डेटाटाइप से कैसे निपटें?

  4. टेबल में प्राथमिक कुंजी के लिए सबसे अच्छा अभ्यास क्या है?

  5. SQL सर्वर में फ़ंक्शन बनाम संग्रहीत कार्यविधि