নিক এবং মার্টিন দ্বারা উল্লিখিত হিসাবে, আপনার কোয়েরির চূড়ান্ত স্থিতি এসকিউএল সার্ভার আপনার নেটওয়ার্কের কেবল শেষ হওয়ার আগে আপনার ক্যাবল টান সম্পর্কে জানে কিনা তার উপর নির্ভর করে depends অনলাইন বই থেকে (যদিও আমি আকর্ষণীয় মনে করি যে এর জন্য 2000 , 2005 , 2008 , এবং 2008 আর 2 তে সমতুল্য বিষয় রয়েছে তবে 2012 বা 2014 নয়):
কোনও ত্রুটি যদি কোনও লেনদেনের সফল সমাপ্তি প্রতিরোধ করে, এসকিউএল সার্ভার স্বয়ংক্রিয়ভাবে লেনদেনটিকে ফিরিয়ে আনবে এবং লেনদেনের দ্বারা পরিচালিত সমস্ত সংস্থানকে মুক্ত করে। ডাটাবেস ইঞ্জিনের কোনও উদাহরণের সাথে ক্লায়েন্টের নেটওয়ার্ক সংযোগটি যদি ভাঙা হয়, যখন নেটওয়ার্কটি বিরতির উদাহরণটি জানায় তখন সংযোগের জন্য কোনও বকেয়া লেনদেন আবার ঘুরিয়ে দেওয়া হয়। যদি ক্লায়েন্ট অ্যাপ্লিকেশন ব্যর্থ হয় বা ক্লায়েন্টের কম্পিউটারটি ডাউন হয়ে যায় বা পুনরায় চালু হয়, এটি সংযোগটিও ভেঙে দেয় এবং নেটওয়ার্ক যখন ব্রেকটির কথা জানায় তখন ডেটাবেস ইঞ্জিনের উদাহরণগুলি কোনও অসামান্য সংযোগ ফিরিয়ে দেয়। যদি ক্লায়েন্ট অ্যাপ্লিকেশনটি লগ করে দেয় তবে কোনও বকেয়া লেনদেন আবার ফিরে আসে।
(একদিকে যেমন ২ য় শেষ বাক্যে সেই শব্দ সংযোগগুলি সম্ভবত লেনদেনের জন্য বোঝানো হয়েছিল I আমি জানি না কীভাবে কোনও সংযোগটি পিছনে ফিরে আসে))
একইভাবে, এসকিউএল সার্ভার অপ্রত্যাশিতভাবে সার্ভারটি বন্ধ হয়ে যাওয়ার পরে পুনরুদ্ধারের সময় লেনদেনগুলি পূর্বাবস্থায় ফেরানো বা পূর্বাবস্থায় ফিরিয়ে আনতে পারে এবং এটি বন্ধ হওয়ার মুহুর্তে লেনদেনের অবস্থার উপর নির্ভর করবে। আমি দেখেছি লোকে এই কৌশলটি ব্যবহার করে যা করতে চেষ্টা করছিল তা অর্জন করতে (লেনদেন (গুলি) বাতিল করতে এবং সার্ভারটি আবার শুরু করার সাথে সাথে বেশিরভাগ কাজ কেবল পুনরায় করা হয়েছিল (সুতরাং তাদের হাঁটুর ঝাঁকুনির প্রতিক্রিয়ার নেট প্রভাব আরও কাছাকাছি ছিল তারা প্রত্যাশা চেয়ে শূন্য)।
সুতরাং এটির অধীন হওয়ার পরিবর্তে, আতঙ্কের মধ্যে কঠোর জিনিসগুলি না করে নেটওয়ার্ক কেবল লাগানো বা মেশিন বন্ধ করে দেওয়ার পরিবর্তে, আমি ভবিষ্যতে আপনাকে পরামর্শ দিচ্ছি যে গুরুত্বপূর্ণ সিস্টেমগুলির বিরুদ্ধে অ্যাডহক অনুসন্ধান চালানো সম্পর্কে আপনার আরও ভাল শৃঙ্খলা রয়েছে। উদাহরণস্বরূপ, পরিবর্তে:
UPDATE dbo.sometable
-- where *oops* I forgot this part
এটা আছে:
BEGIN TRANSACTION;
UPDATE dbo.sometable
-- where *oops* I forgot this part
-- COMMIT TRANSACTION;
-- ROLLBACK TRANSACTION;
তারপরে, আপডেটটি যদি সত্যিই সঠিক হয় তবে আপনি COMMIT
অংশটি হাইলাইট করতে এবং চালাতে পারেন। যদি এটি না হয়, আপনি শান্তভাবেROLLBACK
অংশটি হাইলাইট করতে এবং এটি চালাতে পারেন। এমনকি এই বয়লারপ্লেটটি অন্তর্ভুক্ত করতে আপনার টেমপ্লেট সম্পাদনা করতে আপনি এসএসএমএস সরঞ্জাম প্যাকের মতো অ্যাড-ইনগুলিও ব্যবহার করতে পারেন New Query
।
আপনি এখনও ক্যোয়ারি চালাচ্ছেন এবং তারপরে প্রতিশ্রুতিবদ্ধ বা রোলব্যাক করবেন না এমন পরিস্থিতিতে এখন এটি আপনাকে সমস্যায় ফেলতে পারে , কারণ এখন আপনার লেনদেন অন্যান্য ব্যবহারকারীদের অবরুদ্ধ করছে। তবে এটি অপরিবর্তনীয়ভাবে ডেটা সংশোধন করা ভাল।
এবং অবশ্যই, বরাবরের মতো, একটি ব্যাকআপ রাখুন যা আপনি নির্ভর করতে পারেন।