आप में से कुछ के पास प्रकाशित Hekaton . तक पहुंच है इन-मेमोरी ओएलटीपी डेमो स्क्रिप्ट जिसमें एडवेंचरवर्क्स शामिल हैं; नवीनतम नमूना यहां प्रकाशित किया गया है। ये उदाहरण कोडप्लेक्स पर एडवेंचरवर्क्स2012 नमूना डेटाबेस पर पिगीबैक हैं। यदि आपने इन नमूनों को आजमाया है, तो हो सकता है कि आपको कुछ ऐसी समस्याएं आ रही हों जो इस तकनीक के साथ आपके पहले अनुभव को नाटकीय रूप से बदल सकती हैं।
डेटाबेस प्राधिकरण
बहुत से लोग "AdventureWorks2012 डेटा फ़ाइल" डाउनलोड करते हैं - एक 200 एमबी .mdf फ़ाइल जिसे आप संलग्न कर सकते हैं - बिना लॉग के - निम्नलिखित सिंटैक्स का उपयोग करके:
CREATE DATABASE AdventureWorks2012 ON ( NAME = AdventureWorks2012_Data, FILENAME = '<path>\AdventureWorks2012_Data.mdf' ) FOR ATTACH_REBUILD_LOG;
समस्या यह है कि, यदि आप अपने विंडोज खाते के रूप में SQL सर्वर इंस्टेंस से जुड़े हैं, तो आप अनजाने में डेटाबेस स्वामी के रूप में समाप्त हो सकते हैं। जो अधिकांश परिदृश्यों में कोई बड़ी बात नहीं होगी, सिवाय इसके कि यदि आप EXECUTE AS OWNER
के साथ संग्रहीत कार्यविधियाँ बनाते हैं , जैसा कि आपके सामने आने वाले कई नमूने करेंगे, इससे समस्या हो सकती है। उदाहरण के लिए, आपको यह पंक्ति कई मूल रूप से संकलित संग्रहीत कार्यविधियों में मिल सकती है:
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
जब तक आप पहले से ही इस समस्या को अन्य तरीकों से कम नहीं करते हैं, यदि डेटाबेस का स्वामी आपका विंडोज खाता है, तो ऐसी प्रक्रिया बनाने का प्रयास करते समय आपको निम्न त्रुटि मिलने की संभावना है:
संदेश 15517, स्तर 16, राज्य 1, प्रक्रिया [प्रक्रिया का नाम]डेटाबेस प्रिंसिपल के रूप में निष्पादित नहीं किया जा सकता क्योंकि प्रिंसिपल "डीबीओ" मौजूद नहीं है, इस प्रकार के प्रिंसिपल का प्रतिरूपण नहीं किया जा सकता है, या आपके पास अनुमति नहीं है।
आपके परिवेश के आधार पर, आप गंभीरता से विचार करना चाहेंगे कि आप इससे कैसे निपटते हैं; मेरे मामले में, मैंने आसान रास्ता अपनाया और डेटाबेस पर प्राधिकरण को sa
. पर सेट कर दिया :
ALTER AUTHORIZATION ON DATABASE::AdventureWorks2012 TO sa;
इस बिंदु पर मैं बिना किसी समस्या के डेमो स्क्रिप्ट चलाने में सक्षम था (ठीक है, जब मुझे एक और मेमोरी-अनुकूलित फ़ाइल समूह जोड़ने का प्रयास किया गया तो मुझे त्रुटियां मिलीं, लेकिन यह एक पूरी तरह से अलग और अनदेखी समस्या है)।
बकेट काउंट
आपकी स्मृति-अनुकूलित तालिकाओं के लिए बकेट काउंट कैसे चुनें, इस बारे में व्यावहारिक मार्गदर्शन का एक टन प्रतीत नहीं होता है। एमएसडीएन पर यह आलेख है, जो कुछ तकनीकी विवरणों में जाता है, और क्लाउस एसचेनब्रेनर ने इस पोस्ट को इस क्षेत्र में स्मार्ट विकल्प बनाने के बारे में लिखा है। इसके अलावा, आप प्रयोग करने के लिए अपने आप में बहुत अधिक हैं। मैंने जो SWAG अक्सर सुना है, वह अद्वितीय कुंजी मानों की संख्या 1x-2x है, ताकि बिंदु लुकअप सबसे कुशल हो। हालांकि कुछ नमूने आपको वहां मिलेंगे या तो लगातार 1,000,000 बाल्टी, या छोटी संख्या जैसे 100 (और एक मामले में 5 भी), या एक मिश्रण का उपयोग करें। इसे ध्यान में रखें जब आप अपने स्वयं के स्कीमा और डेटा एक्सेस पैटर्न के साथ प्रयोग करना शुरू करते हैं - आपको अपने परिदृश्य के लिए "स्वीट स्पॉट" खोजने के लिए तालिकाओं को चीर कर अलग-अलग बकेट आकारों के साथ फिर से प्रयास करना पड़ सकता है।
रिकवरी मॉडल
AdventureWorks2012 डेटाबेस SIMPLE
. पर सेट है स्वास्थ्य लाभ। डेटाबेस स्वामी के मुद्दे की तरह, ज्यादातर मामलों में यह एक नमूना डेटाबेस के लिए इतना बड़ा सौदा नहीं है। लेकिन जब आप इन-मेमोरी OLTP का परीक्षण कर रहे हों - और संभवतः अन्य तकनीकों के संयोजन में जो SIMPLE
बनाते हैं उपलब्धता समूहों जैसे डील-ब्रेकर को पुनर्प्राप्त करना - FULL
पर पुनर्प्राप्ति सेट के साथ डेटाबेस के विरुद्ध अपना परीक्षण करने के लिए यह बहुत अधिक समझ में आ सकता है . अन्यथा आप कुछ ऐसे व्यवहारों का पालन करने में विफल हो सकते हैं जो विभिन्न पुनर्प्राप्ति मॉडल के अंतर्गत भिन्न हो सकते हैं। आप AdventureWorks2012 को FULL
. में बदल सकते हैं इस प्रकार है:
ALTER DATABASE AdventureWorks2012 SET RECOVERY FULL;
और एक पूर्ण बैकअप लेना न भूलें, ताकि एक बैकअप श्रृंखला स्थापित हो जाए, और डेटाबेस छद्म रूप में काम नहीं कर रहा है-SIMPLE
पुनर्प्राप्ति मोड।