پرو ہوسٹر > بلاگ > انتظامیہ > MS SQL سرور کے نئے ورژن سے بیک اپ ڈیٹا کو پرانے ورژن میں منتقل کرنا
MS SQL سرور کے نئے ورژن سے بیک اپ ڈیٹا کو پرانے ورژن میں منتقل کرنا
پس منظر
ایک بار، بگ کو دوبارہ پیش کرنے کے لیے، مجھے پروڈکشن ڈیٹا بیس کے بیک اپ کی ضرورت تھی۔
میری حیرت کی بات یہ ہے کہ میں مندرجہ ذیل حدود میں چلا گیا:
ڈیٹا بیس کا بیک اپ ورژن پر بنایا گیا تھا۔ SQL سرور 2016 اور میرے ساتھ مطابقت نہیں رکھتا تھا۔ SQL سرور 2014.
میرے کام کے کمپیوٹر پر، استعمال شدہ OS تھا۔ ونڈوز 7اس لیے میں اپ ڈیٹ نہیں کر سکا SQL سرور ورژن 2016 تک
معاون پروڈکٹ ایک بڑے سسٹم کا حصہ تھا جس میں مضبوطی سے جوڑے جانے والے میراثی فن تعمیر تھے اور اس نے دیگر مصنوعات اور اڈوں سے بھی بات کی تھی، لہذا اسے دوسرے اسٹیشن پر تعینات کرنے میں کافی وقت لگ سکتا ہے۔
مندرجہ بالا کو دیکھتے ہوئے، میں اس نتیجے پر پہنچا کہ غیر معیاری حل کی بیساکھیوں کا وقت آگیا ہے۔
بیک اپ سے ڈیٹا کو بحال کرنا
میں نے ورچوئل مشین استعمال کرنے کا انتخاب کیا۔ اوریکل VM ورچوئل باکس ونڈوز 10 کے ساتھ (آپ ایج براؤزر کے لیے ٹیسٹ امیج لے سکتے ہیں۔ اس وجہ سے)۔ ورچوئل مشین پر SQL سرور 2016 انسٹال کیا گیا تھا اور ایپلیکیشن ڈیٹا بیس کو بیک اپ سے بحال کیا گیا تھا (ہدایات).
ورچوئل مشین پر SQL سرور تک رسائی کو ترتیب دینا
اگلا، باہر سے ایس کیو ایل سرور تک رسائی حاصل کرنے کے لیے کچھ اقدامات کرنے کی ضرورت تھی:
فائر وال کے لیے، پورٹ کی درخواستوں کو چھوڑنے کے لیے ایک اصول شامل کریں۔ 1433.
یہ ضروری ہے کہ سرور تک رسائی ونڈوز کی توثیق کے ذریعے نہ ہو بلکہ لاگ ان اور پاس ورڈ کا استعمال کرتے ہوئے ایس کیو ایل کے ذریعے ہو (اس تک رسائی کو ترتیب دینا آسان ہے)۔ تاہم، اس صورت میں، آپ کو SQL سرور کی خصوصیات میں SQL توثیق کو فعال کرنا یاد رکھنا ہوگا۔
ٹیب پر SQL سرور پر صارف کی ترتیبات میں صارف کی تعریفیں بحال شدہ ڈیٹا بیس کے لیے صارف کے کردار کی وضاحت کریں۔ db_securityadmin.
منتخب کریں ٹاسکس -> اسکرپٹ تیار کریں۔ پورٹیبل بیس کے لیے۔
ان اشیاء کو منتخب کریں جن کی آپ کو ڈیفالٹ قدر منتقل کرنے یا چھوڑنے کی ضرورت ہے (اس صورت میں، تمام ڈیٹا بیس آبجیکٹ کے لیے اسکرپٹ بنائے جائیں گے)۔
اسکرپٹ کو محفوظ کرنے کے لیے سیٹنگز کی وضاحت کریں۔ اسکرپٹ کو ایک ہی یونیکوڈ فائل میں محفوظ کرنا سب سے آسان ہے۔ پھر، ناکامی کی صورت میں، آپ کو دوبارہ تمام مراحل کو دہرانے کی ضرورت نہیں ہے۔
اسکرپٹ کے محفوظ ہونے کے بعد، مطلوبہ بنیاد بنانے کے لیے اسے اصل SQL سرور (پرانا ورژن) پر چلایا جا سکتا ہے۔
انتباہ: اسکرپٹ پر عمل کرنے کے بعد، آپ کو بیک اپ سے ڈیٹا بیس کی سیٹنگز اور اسکرپٹ کے ذریعہ بنائے گئے ڈیٹا بیس کے درمیان خط و کتابت کو چیک کرنے کی ضرورت ہے۔ میرے معاملے میں، اسکرپٹ میں کولیٹ کے لیے کوئی ترتیب نہیں تھی، جس کی وجہ سے ڈیٹا کی منتقلی میں ناکامی کا سامنا کرنا پڑا اور ضمیمہ اسکرپٹ کا استعمال کرتے ہوئے ڈیٹا بیس کو دوبارہ بنانے کے لیے دف کے ساتھ رقص کیا۔
مواد کی منتقلی
ڈیٹا منتقل کرنے سے پہلے، آپ کو ڈیٹا بیس پر تمام پابندیوں کی جانچ کو غیر فعال کرنا ہوگا:
ڈیٹا کی منتقلی ڈیٹا امپورٹ وزرڈ کا استعمال کرتے ہوئے کی جاتی ہے۔ ٹاسکس -> ڈیٹا درآمد کریں۔ ایس کیو ایل سرور پر، جہاں اسکرپٹ کے ذریعہ بنایا گیا ڈیٹا بیس واقع ہے:
ذریعہ سے کنکشن کی ترتیبات کی وضاحت کریں (ایک ورچوئل مشین پر ایس کیو ایل سرور 2016)۔ میں نے ڈیٹا سورس استعمال کیا۔ ایس کیو ایل سرور مقامی کلائنٹ۔ اور مذکورہ ایس کیو ایل کی توثیق۔
منزل کے لیے کنکشن کی ترتیبات کی وضاحت کریں (میزبان مشین پر ایس کیو ایل سرور 2014)۔
اگلا، میپنگ ترتیب دیں. سب کو منتخب کرنا ضروری ہے۔ صرف پڑھنے کے لیے نہیں۔ اشیاء (مثال کے طور پر، مناظر کو منتخب کرنے کی ضرورت نہیں ہے)۔ اضافی اختیارات کے طور پر، منتخب کریں۔ "شناختی کالموں میں داخل کرنے کی اجازت دیں"اگر اس طرح کا استعمال کیا جاتا ہے. انتباہ: اگر، کئی ٹیبلز کو منتخب کرنے اور ان کی پراپرٹی سیٹ کرنے کی کوشش کرتے وقت "شناختی کالموں میں داخل کرنے کی اجازت دیں" پراپرٹی پہلے ہی منتخب کردہ ٹیبلز میں سے کم از کم ایک کے لیے سیٹ کر دی گئی ہے، ڈائیلاگ اس بات کی نشاندہی کرے گا کہ پراپرٹی پہلے ہی تمام منتخب ٹیبلز کے لیے سیٹ ہو چکی ہے۔ یہ حقیقت مبہم ہو سکتی ہے اور ہجرت کی غلطیوں کا باعث بن سکتی ہے۔
اگر کوئی خرابی ہوتی ہے تو، ہم ترتیبات کو چیک کرتے ہیں، غلطیوں کے ساتھ بنائے گئے ڈیٹا بیس کو حذف کرتے ہیں، اسکرپٹ سے دوبارہ تخلیق کرتے ہیں، تصحیح کرتے ہیں اور ڈیٹا کی منتقلی کو دہراتے ہیں۔
حاصل يہ ہوا
یہ کام کافی نایاب ہے اور صرف مندرجہ بالا حدود کی وجہ سے ہوتا ہے۔ سب سے عام حل ایس کیو ایل سرور کو اپ گریڈ کرنا یا ریموٹ سرور سے جڑنا ہے اگر ایپلیکیشن آرکیٹیکچر اس کی اجازت دیتا ہے۔ تاہم، کوئی بھی میراثی کوڈ اور ناقص معیار کی ترقی کے ٹیڑھے ہاتھوں سے محفوظ نہیں ہے۔ مجھے امید ہے کہ آپ کو اس ہدایت کی ضرورت نہیں ہوگی، لیکن اگر آپ کو پھر بھی اس کی ضرورت ہے، تو اس سے بہت وقت اور اعصاب کو بچانے میں مدد ملے گی۔ آپکی توجہ کا شکریہ!