আপনি যদি রোলব্যাক না করেন তবে কোনও লেনদেন কি এখনও পরিবর্তন হবে?


10

বলুন আমি একটি ক্যোয়ারী চালাচ্ছি

begin tran

update users
set name = 'Jimmy'
where name = 'john'

আমি যদি লেনদেনটি রোলব্যাক না করি , তাহলে কি এই পরিবর্তনগুলি করা হবে, এটি ত্রুটি ঘটায় বা এটি যেভাবেই রোলব্যাক হিসাবে কাজ করবে?


আমি অনুমান করি যে আপনি এই বিবৃতিগুলি চালনার জন্য যে ক্লায়েন্ট সফটওয়্যার ব্যবহার করেন বা অ্যাপ্লিকেশনটি যেখানে তারা এমবেড করা হয়েছে তার উপর নির্ভর করে। কিছু কনফিগার করা থাকলে স্ব-প্রতিশ্রুতিবদ্ধ হতে পারে (এসএসএমএস এটি ডিফল্টরূপে করবে)।
mustaccio

3
সুস্পষ্টভাবে ঘোষিত লেনদেনগুলি স্ব-প্রতিশ্রুতি দেয় না। যেহেতু জোশ একটি লেনদেন শুরুর ঘোষণা করেছে এটি জাস্টিন গুহ উত্তর দিয়েছিল ঠিক তেমন আচরণ করবে।
ডেভ

উত্তর:


16

লেনদেন কী তা আপনাকে বুঝতে হবে - এটি কাজের একক ইউনিট। এটি সমস্ত বা কিছুই নয় ( এসিডি বৈশিষ্ট্য অনুসরণ করে ) এবং এটি ডাটাবেসের ধারাবাহিকতার গ্যারান্টি দেয়।

আমি যদি লেনদেনটি রোলব্যাক না করি, তবে কি এই পরিবর্তনগুলি করা হবে?

যদি আপনি প্রতিশ্রুতিবদ্ধ হন তবে পরিবর্তনগুলি করা হবে। এসকিউএল সার্ভার লেনদেন লগের সমস্ত পরিবর্তন রেকর্ড করবে এবং একবার আপনি প্রতিশ্রুতিবদ্ধ হয়ে গেলে সেগুলি ডেটা ফাইলে শক্ত হয়ে যায়।

যদি আপনি প্রতিশ্রুতি না দেন তবে আপনার লেনদেন অনির্দিষ্টকালের জন্য উন্মুক্ত থাকবে - যা আপনি দেখতে sys.dm_tran_active_transactions / sys.dm_tran_database_transactions / sys.dm_tran_session_transactionsবা ব্যবহার করতে পারেন DBCC OPENTRAN

এছাড়াও, আপনি যা শুরু করেছেন তা হ'ল একটি স্পষ্ট লেনদেন , যা স্পষ্টভাবে কোনও কমিট বা রোলব্যাকের বিবৃতি দিয়ে শেষ করা উচিত।

আরও পড়ুন - সর্বদা লেনদেন তৈরি করা কি খারাপ অভ্যাস?


@ জোস্টস্টেভেনসন আমার মনে হয় ডাটাবেস প্রসঙ্গে পারমাণবিক অপারেশনগুলি পড়ার সময় এটি মূল্যবান worth
নেলজ

12

আপনি যদি লেনদেন প্রতিশ্রুতিবদ্ধ বা রোলব্যাক না করেন তবে লেনদেন অনির্দিষ্টকালের জন্য অব্যাহত থাকবে। এটি এর লকগুলি ধরে রাখা অব্যাহত রাখবে, সম্ভাব্যভাবে অন্যান্য সেশনগুলিকে অবরুদ্ধ করে রাখবে যতক্ষণ না হয় আপনি লেনদেনটি একটি commitবা একটি মাধ্যমে চালিয়ে যান বা rollbackডিবিএ উপস্থিত না করে এবং সেশনটি মেরে না ফেলে (অথবা নেটওয়ার্ক হিচাপের মতো কোনও কিছু সংযোগ ব্যর্থ হওয়ার কারণ না ঘটে)। যদি কোনও ডিবিএ অধিবেশনটিকে হত্যা করে তবে তারা স্পষ্টতই এই এবং অন্য কোনও উন্মুক্ত লেনদেনের জন্য একটি রোলব্যাক জারি করবে।


এটি সঠিক উত্তর। এই তথ্যের টুকরো ব্যতীত আমার পক্ষে কমিট এবং রোলব্যাক বিবৃতি সম্পূর্ণরূপে ব্যবহার করার পক্ষে কোনও ধারণা নেই।
তারেক

1

যতক্ষণ না এই লেনদেনটি করা হয়, ততক্ষণ পরিবর্তন করা হবে না যতক্ষণ না উপরে বর্ণিত উত্তর হিসাবে উল্লিখিত সমস্ত কিছুই বা কিছুই নয়,

পারমাণবিকতা এর পিছনে কারণ, আপনি এসিডি লেনদেনের বৈশিষ্ট্যগুলি পরীক্ষা করতে পারেন, এটি একটি ডাটাবেস সিস্টেম অনুসরণ করে এমন মৌলিক বৈশিষ্ট্য।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.