সংহতকরণ পরীক্ষার জন্য এসকিউএল সার্ভার ডাটাবেস স্ন্যাপশট


14

আমি আমাদের সংহতকরণ পরীক্ষার জন্য একটি পরীক্ষণ ডাটাবেস (এসকিউএল সার্ভারে) দিয়ে কাজ করার একটি উপায় নির্ধারণ করার চেষ্টা করছি।

আমার ধারণা ছিল ইন্টিগ্রেশন টেস্ট সমাবেশের সূচনা করার সময় এই পদক্ষেপগুলি করা:

  • সম্পূর্ণ খালি ডাটাবেস তৈরি করুন
  • সমস্ত প্রাসঙ্গিক ডাটাবেস অবজেক্ট (টেবিল, দর্শন, ক্রম ইত্যাদি) তৈরি করতে "ডাটাবেস অবজেক্টগুলি তৈরি করুন" স্ক্রিপ্টটি চালান
  • "বেস ডেটা" পূরণ করুন (দেখার মান ইত্যাদি)
  • (db)_Basisভবিষ্যতে সংহতকরণ পরীক্ষার জন্য "বেস লাইন" হিসাবে পরিচিত একটি ডাটাবেস স্ন্যাপশট নিন

এখন প্রতিটি পরীক্ষার ক্লাসের আগে (1-এন পরীক্ষাগুলি ধারণ করে), আমি সহজেই একটি "স্ন্যাপশট থেকে পুনরুদ্ধার" করার পরিকল্পনা করছিলাম ডাটাবেসের আরও কম-বেশি "ফাঁকা" স্থিতির সুসংজ্ঞায়িত করতে। এখন পর্যন্ত একটি কবজ মত কাজ করে।

যাইহোক, এখানে একটি সংহত পরীক্ষার একটি সেট রয়েছে যা একটি বৃহত পরীক্ষার ডাটাবেসে পরিচালনা করতে হবে - তাই আমি আশা করি যে প্রতিটি পরীক্ষার ফিক্সচারের আগে (এন পৃথক পরীক্ষার সাথে ক্লাস)

  • (db)_Basisস্ন্যাপশট থেকে ডাটাবেস পুনরুদ্ধার
  • ডাটাবেসে সেই 50'000 + সারি ডেটা .োকান
  • অন্য একটি স্ন্যাপশট (db)_With_Testdataস্ন্যাপশট তৈরি করুন

এবং তারপরে প্রতিটি পরীক্ষার জন্য, ডেটাবেসটিকে সু-সংজ্ঞায়িত (db)_With_Testdataস্ন্যাপশট সংস্করণে পুনরায় সেট করুন , পরীক্ষাগুলি পরিচালনা করুন, ফলাফলটি যাচাই করুন এবং আরও অনেক কিছু।

সমস্যা হ'ল: একই সাথে আমার দুটি ডিবি স্ন্যাপশট থাকতে পারে বলে মনে হয় না - একবার করার পরে আমি আমার ডেটাবেসগুলিকে তাদের উভয়টিতে পুনরুদ্ধার করতে পারি না .... আমি এই ত্রুটিটি পেয়েই চলেছি:

এমএসজি 3137, স্তর 16, রাজ্য 4, লাইন 9
ডেটাবেস আর ফিরে দেওয়া যায় না। হয় প্রাথমিক বা স্ন্যাপশটের নামগুলি যথাযথভাবে নির্দিষ্ট করা হয়েছে, অন্য সমস্ত স্ন্যাপশট বাদ দেওয়া হয়নি, বা ফাইলগুলি নেই।

এমএসজি 3013, স্তর 16, রাজ্য 1, লাইন 9
পুনরুদ্ধার করুন ডেটাবেস অস্বাভাবিকভাবে শেষ করছে।

সত্যই কি এসকিউএল সার্ভার ডাটাবেস স্ন্যাপশট কাজ করে ?? ভীতিজনকভাবে সীমাবদ্ধ মনে হচ্ছে ..... আমি বুঝতে পারি যদি আমি সরাসরি মূল "(ডিবি) _বাসি" স্ন্যাপশটে ফিরে যেতে না পারি - তবে কেবল এখন আমার কাছে দুটি স্ন্যাপশট রয়েছে, আমি এমনকি সাম্প্রতিকতমটিতে যেতে পারি না ?!?!?


50,000 সারি সন্নিবেশ করানো কত সময় নেয়? এর পরিবর্তে আপনি কি আবার আবেদন করতে পারবেন?
আরবেরি ইয়ং

উত্তর:


12

দুর্ভাগ্যক্রমে, এটি নকশা দ্বারা।

বিএল পৃষ্ঠা থেকে নেওয়া হয়েছে " একটি ডাটাবেস স্ন্যাপশটে একটি ডেটাবেস রিভার্ট করুন ":

সীমাবদ্ধতা এবং সীমাবদ্ধতা

নিম্নলিখিত অবস্থার অধীনে ফিরে যাওয়া অসমর্থিত:

  • ডাটাবেসটিতে বর্তমানে কেবলমাত্র একটি ডাটাবেস স্ন্যাপশট থাকতে হবে , যেখানে আপনি ফেরার পরিকল্পনা করছেন।
  • যে কোনও পঠনযোগ্য বা সংক্ষিপ্ত ফাইলগ্রুপগুলি ডাটাবেসে বিদ্যমান।
  • যে কোনও ফাইল এখন অফলাইনে রয়েছে তবে স্ন্যাপশট তৈরি হওয়ার সময় অনলাইনে ছিল

বিকল্প হিসাবে, আপনি প্রথম স্ন্যাপশট ড্রপ করতে পারে (db)_Basis। আমি বুঝতে পারি যে এটি অত্যন্ত সীমাবদ্ধ বলে মনে হচ্ছে তবে এটিকে এটি দেখুন: স্ন্যাপশটগুলি মূল ডেটা ফাইলগুলির উপর ভিত্তি করে স্পার ফাইল হয়, সুতরাং নির্দিষ্ট স্ন্যাপশটে ফিরে যাওয়া যে কোনওভাবেই সমস্ত স্ন্যাপশটকে অকার্যকর করে দেবে (বেস ডেটা ফাইলগুলি রিভার্ট অপারেশন দ্বারা পরিবর্তিত হবে) । সীমাবদ্ধতা বিরক্তিকর হতে পারে, তবে অযৌক্তিক দেখাচ্ছে না।


4

আর একটি দৃষ্টিভঙ্গি হ'ল ব্যাকআপ নেওয়া এবং সেগুলি পুনরুদ্ধার করা - যেহেতু আপনি কিছু খালি মূল্যবোধ সহ খালি ডাটাবেস এবং স্কিমা তৈরি করছেন।

এছাড়াও, কেবল 50K সারি সন্নিবেশ করানো, ডাটাবেসটি এত বড় হবে না। আপনি যদি সংক্ষেপণ ব্যবহার করেন তবে ব্যাকআপের আকারও কম হবে।

আপনার কাছে টিএসকিউএল এজেন্ট কাজ বা কেবল স্ক্রিপ্ট থাকতে পারে (আপনি যে স্ট্রাকড পদ্ধতি তৈরি করতে পারেন এবং আপনার প্রাপ্ত আউটপুটটির উপর ভিত্তি করে আপনার পরীক্ষার পরে কেবল এটি কল করতে পারেন)।

  • বেস ব্যাকআপ - (db)_Basis
  • টেস্টডেটা ব্যাকআপ সহ - (db)_With_Testdata

আপনার ইন্টিগ্রেশন স্ক্রিপ্টগুলি চালিত করুন এবং চূড়ান্ত আউটপুটটির উপর ভিত্তি করে, আপনি যা চান তার দিকে প্রত্যাবর্তন করতে আপনি উপরের যে কোনও কাজ চালাতে পারেন।

আপনি অনুগ্রহ করে যে ডাটাবেস স্ন্যাপশটের সীমাবদ্ধতাটি আপনি আঘাত করছেন তাই ব্যাকআপ / পুনরুদ্ধার পদ্ধতিটি আপনার দৃশ্যে অনেক সুন্দর । এছাড়াও, পল র্যান্ডাল এসকিউএল সার্ভার ২০১২ পর্যন্ত সমস্ত সংস্করণে একটি বাজে বাগ সম্পর্কে ব্লগ করেছে (এটি পরবর্তী সিউতে স্থির হয়েছে কিনা তা নিশ্চিত নয়)

আপনি যখন ডাটাবেস স্ন্যাপশটে ফিরে যান, উত্স ডাটাবেসের লেনদেনের লগ ফাইলটি ছিঁড়ে যায় এবং দুটি 0.25MB ভিএলএফ দিয়ে একটি 0.5MB লগ ফাইলের সাথে প্রতিস্থাপন করা হয়।


কিন্তু 5-7 সেকেন্ডের মধ্যে যে, পরিসর যখন একটি ডাটাবেস স্ন্যাপশট থেকে পুনরূদ্ধার 1 ভাল নিচের দ্বিতীয় - - যে কেন আমরা ব্যাকআপ বিকল্প খুঁজছেন / পুনঃস্থাপন হ্যাঁ, আমরা ব্যাকআপ / পুনঃস্থাপন ব্যবহার করছি
marc_s

@মার্ক_স আমার পক্ষে একটি 5-7 সেকেন্ড সীমাবদ্ধতা ছাড়াই গ্রহণযোগ্য এবং বাগগুলি 1 সেকেন্ড বনাম সীমাবদ্ধতা এবং সম্ভাব্য বাগ সহ :-)
কিন শাহ

আমাদের কাছে এটি গ্রহণযোগ্য নয় - আমরা একটি দ্রুত সমাধান খুঁজছি
marc_s

@মার্ক_স আমি আপনার পয়েন্টটি গ্রহণযোগ্য নয় হিসাবে দেখছি । তবে আপনি ইতিমধ্যে ডিজাইনের মাধ্যমে সীমাবদ্ধতাটিকে আঘাত করছেন। আপনি কেবলমাত্র 1 টি স্ন্যাপশট ব্যবহার করতে পারেন তবে ফিরে যেতে আবার ব্যাকআপের প্রয়োজন। পছন্দটি আপনার - আপনার টেস্টডেটা সহ একক স্ন্যাপশট ব্যবহার করুন এবং বেস ডেটাতে পুনরুদ্ধার করতে ব্যাকআপ ব্যবহার করুন।
কিন শাহ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.