#C سے SQL سرور میں ڈیٹا انسرٹ کرتے ہوئے اگر لائٹ چلی جائے تو؟

رانا

محفلین
میں WPF میں ایک پروجیکٹ پر کام کررہا ہوں۔ آج ایک سنیریو کی طرف توجہ گئی کہ اکثر جگہ پر ماسٹر اور ڈیٹیل ٹیبلز میں ڈیٹا انسرٹ ہورہا ہے۔اگر ماسٹر ٹیبل میں انسرشن کا کوڈ رن ہوچکا ہے اور اسکے بعد for loop میں ڈیٹیل کے ٹیبل میں کچھ چائلڈ ریکارڈز انسرٹ ہورہے ہیں اور پوری لوپ ختم ہونے سے پہلے ہی اگر لائٹ چلی جائے یا کسی وجہ سے سسٹم شٹ ڈاون ہوجائے تو پھر پہلے انسرٹ کئے ہوئے ریکارڈز کو کیسے رول بیک کیا جائے؟ یہ سنیریو دو طرح سے ہے کہ سرور بھی اچانک بند ہوسکتا ہے اور کلائنٹ بھی بند ہوسکتا ہے-

میں مائکروسافٹ کی SQLHelper کی کلاس استعمال کررہا ہوں اور بیک اینڈ پر stored procedureاستعمال کررہا ہوں۔

ایک گھنٹہ سر کھپانے کے بعد سوچا کہ محفل پر شائد کسی دوست کو اس مسئلے سے کبھی واسطہ پڑا ہو تو مذید سر کھپانے سے بچ جاوں گا۔;)
 
اگر کسی طرح ٹرانزیکشن کمٹ کو ڈیٹا بیس لئیر کے بجائے ایپلیکیشن لئیر سے کنٹول کر سکیں تو یہ کام آسان ہوگا۔ مثلاً کوئی ٹرانزیکشن تب تک کمٹ نہ کیا جائے جب تک کلائنٹ سائڈ سے کمٹ کی ریکئیسٹ نہ جائے۔ پھر چائلڈ ریکارڈ والا لوپ ختم ہونے کے فوراً بعد ایسے انسٹرکشنز کلائنٹ سائڈ سے بھیجے جائیں جن کو پا کر سرور سائڈ اسکرپٹ ڈیٹا بیس ٹرانزیکشنز کو کمٹ کر دے۔ ہم صرف کانسپچؤل لیول پر ہی بتا سکتے ہیں کیوں کہ ہمیں مائکروسافٹ کے پلیٹ فارم پر ڈیویلپمینٹ کا کوئی تجربہ نہیں۔ :)
 

سید ذیشان

محفلین
ہر ایک row لکھے جانے سے پہلے temporary table میں جاتی ہے۔ اور commit کرنے کے بعد ماسٹر ٹیبل میں لکھی جاتی ہے۔ آپ کے مسئلے کا حل یہ ہے کہ اس وقت تک commit نہ کیا جائے جب تک for loop ختم نہیں ہو جاتا۔
 

رانا

محفلین
بہت شکریہ سعود بھائی اور zeesh
logically تو ٹو دی پوائنٹ حل ہے۔ اسے implement کرنے کی کوشش کرتا ہوں۔

سعود بھائی! میں تو مائکروسافٹ سے سخت الرجک تھا لیکن اس کا کیا کریں کہ جس سے بھاگ رہا تھا جاب ہی اسی کی ملی ہے۔:( اب بھی میری ساری توجہ جاب کے بعد شام میں دوسری ٹیکنالوجیز کو اسٹڈی کرنے پر ہے تاکہ مائکروسافٹ سے چھٹکارا حاصل کیا جاسکے۔:)
 
Top