MS SQL سرور کے نئے ورژن سے بیک اپ ڈیٹا کو پرانے ورژن میں منتقل کرنا

پس منظر

ایک بار، بگ کو دوبارہ پیش کرنے کے لیے، مجھے پروڈکشن ڈیٹا بیس کے بیک اپ کی ضرورت تھی۔

میری حیرت کی بات یہ ہے کہ میں مندرجہ ذیل حدود میں چلا گیا:

  1. ڈیٹا بیس کا بیک اپ ورژن پر بنایا گیا تھا۔ SQL سرور 2016 اور میرے ساتھ مطابقت نہیں رکھتا تھا۔ SQL سرور 2014.
  2. میرے کام کے کمپیوٹر پر، استعمال شدہ OS تھا۔ ونڈوز 7اس لیے میں اپ ڈیٹ نہیں کر سکا SQL سرور ورژن 2016 تک
  3. معاون پروڈکٹ ایک بڑے سسٹم کا حصہ تھا جس میں مضبوطی سے جوڑے جانے والے میراثی فن تعمیر تھے اور اس نے دیگر مصنوعات اور اڈوں سے بھی بات کی تھی، لہذا اسے دوسرے اسٹیشن پر تعینات کرنے میں کافی وقت لگ سکتا ہے۔

مندرجہ بالا کو دیکھتے ہوئے، میں اس نتیجے پر پہنچا کہ غیر معیاری حل کی بیساکھیوں کا وقت آگیا ہے۔

بیک اپ سے ڈیٹا کو بحال کرنا

میں نے ورچوئل مشین استعمال کرنے کا انتخاب کیا۔ اوریکل VM ورچوئل باکس ونڈوز 10 کے ساتھ (آپ ایج براؤزر کے لیے ٹیسٹ امیج لے سکتے ہیں۔ اس وجہ سے)۔ ورچوئل مشین پر SQL سرور 2016 انسٹال کیا گیا تھا اور ایپلیکیشن ڈیٹا بیس کو بیک اپ سے بحال کیا گیا تھا (ہدایات).

ورچوئل مشین پر SQL سرور تک رسائی کو ترتیب دینا

اگلا، باہر سے ایس کیو ایل سرور تک رسائی حاصل کرنے کے لیے کچھ اقدامات کرنے کی ضرورت تھی:

  1. فائر وال کے لیے، پورٹ کی درخواستوں کو چھوڑنے کے لیے ایک اصول شامل کریں۔ 1433.
  2. یہ ضروری ہے کہ سرور تک رسائی ونڈوز کی توثیق کے ذریعے نہ ہو بلکہ لاگ ان اور پاس ورڈ کا استعمال کرتے ہوئے ایس کیو ایل کے ذریعے ہو (اس تک رسائی کو ترتیب دینا آسان ہے)۔ تاہم، اس صورت میں، آپ کو SQL سرور کی خصوصیات میں SQL توثیق کو فعال کرنا یاد رکھنا ہوگا۔
  3. ٹیب پر SQL سرور پر صارف کی ترتیبات میں صارف کی تعریفیں بحال شدہ ڈیٹا بیس کے لیے صارف کے کردار کی وضاحت کریں۔ db_securityadmin.

مواد کی منتقلی

دراصل، ڈیٹا کی منتقلی خود دو مراحل پر مشتمل ہے:

  1. ڈیٹا اسکیما ٹرانسفر (ٹیبلز، ویوز، اسٹور شدہ طریقہ کار، وغیرہ)
  2. ڈیٹا خود ہی منتقل کرنا

ڈیٹا اسکیما ٹرانسفر

ہم درج ذیل آپریشنز کرتے ہیں:

  1. منتخب کریں ٹاسکس -> اسکرپٹ تیار کریں۔ پورٹیبل بیس کے لیے۔
  2. ان اشیاء کو منتخب کریں جن کی آپ کو ڈیفالٹ قدر منتقل کرنے یا چھوڑنے کی ضرورت ہے (اس صورت میں، تمام ڈیٹا بیس آبجیکٹ کے لیے اسکرپٹ بنائے جائیں گے)۔
  3. اسکرپٹ کو محفوظ کرنے کے لیے سیٹنگز کی وضاحت کریں۔ اسکرپٹ کو ایک ہی یونیکوڈ فائل میں محفوظ کرنا سب سے آسان ہے۔ پھر، ناکامی کی صورت میں، آپ کو دوبارہ تمام مراحل کو دہرانے کی ضرورت نہیں ہے۔

اسکرپٹ کے محفوظ ہونے کے بعد، مطلوبہ بنیاد بنانے کے لیے اسے اصل SQL سرور (پرانا ورژن) پر چلایا جا سکتا ہے۔

انتباہ: اسکرپٹ پر عمل کرنے کے بعد، آپ کو بیک اپ سے ڈیٹا بیس کی سیٹنگز اور اسکرپٹ کے ذریعہ بنائے گئے ڈیٹا بیس کے درمیان خط و کتابت کو چیک کرنے کی ضرورت ہے۔ میرے معاملے میں، اسکرپٹ میں کولیٹ کے لیے کوئی ترتیب نہیں تھی، جس کی وجہ سے ڈیٹا کی منتقلی میں ناکامی کا سامنا کرنا پڑا اور ضمیمہ اسکرپٹ کا استعمال کرتے ہوئے ڈیٹا بیس کو دوبارہ بنانے کے لیے دف کے ساتھ رقص کیا۔

مواد کی منتقلی

ڈیٹا منتقل کرنے سے پہلے، آپ کو ڈیٹا بیس پر تمام پابندیوں کی جانچ کو غیر فعال کرنا ہوگا:

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

ڈیٹا کی منتقلی ڈیٹا امپورٹ وزرڈ کا استعمال کرتے ہوئے کی جاتی ہے۔ ٹاسکس -> ڈیٹا درآمد کریں۔ ایس کیو ایل سرور پر، جہاں اسکرپٹ کے ذریعہ بنایا گیا ڈیٹا بیس واقع ہے:

  1. ذریعہ سے کنکشن کی ترتیبات کی وضاحت کریں (ایک ورچوئل مشین پر ایس کیو ایل سرور 2016)۔ میں نے ڈیٹا سورس استعمال کیا۔ ایس کیو ایل سرور مقامی کلائنٹ۔ اور مذکورہ ایس کیو ایل کی توثیق۔
  2. منزل کے لیے کنکشن کی ترتیبات کی وضاحت کریں (میزبان مشین پر ایس کیو ایل سرور 2014)۔
  3. اگلا، میپنگ ترتیب دیں. سب کو منتخب کرنا ضروری ہے۔ صرف پڑھنے کے لیے نہیں۔ اشیاء (مثال کے طور پر، مناظر کو منتخب کرنے کی ضرورت نہیں ہے)۔ اضافی اختیارات کے طور پر، منتخب کریں۔ "شناختی کالموں میں داخل کرنے کی اجازت دیں"اگر اس طرح کا استعمال کیا جاتا ہے.
    انتباہ: اگر، کئی ٹیبلز کو منتخب کرنے اور ان کی پراپرٹی سیٹ کرنے کی کوشش کرتے وقت "شناختی کالموں میں داخل کرنے کی اجازت دیں" پراپرٹی پہلے ہی منتخب کردہ ٹیبلز میں سے کم از کم ایک کے لیے سیٹ کر دی گئی ہے، ڈائیلاگ اس بات کی نشاندہی کرے گا کہ پراپرٹی پہلے ہی تمام منتخب ٹیبلز کے لیے سیٹ ہو چکی ہے۔ یہ حقیقت مبہم ہو سکتی ہے اور ہجرت کی غلطیوں کا باعث بن سکتی ہے۔
  4. ہم منتقلی شروع کرتے ہیں۔
  5. رکاوٹ کی جانچ کو بحال کرنا:
    EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'

اگر کوئی خرابی ہوتی ہے تو، ہم ترتیبات کو چیک کرتے ہیں، غلطیوں کے ساتھ بنائے گئے ڈیٹا بیس کو حذف کرتے ہیں، اسکرپٹ سے دوبارہ تخلیق کرتے ہیں، تصحیح کرتے ہیں اور ڈیٹا کی منتقلی کو دہراتے ہیں۔

حاصل يہ ہوا

یہ کام کافی نایاب ہے اور صرف مندرجہ بالا حدود کی وجہ سے ہوتا ہے۔ سب سے عام حل ایس کیو ایل سرور کو اپ گریڈ کرنا یا ریموٹ سرور سے جڑنا ہے اگر ایپلیکیشن آرکیٹیکچر اس کی اجازت دیتا ہے۔ تاہم، کوئی بھی میراثی کوڈ اور ناقص معیار کی ترقی کے ٹیڑھے ہاتھوں سے محفوظ نہیں ہے۔ مجھے امید ہے کہ آپ کو اس ہدایت کی ضرورت نہیں ہوگی، لیکن اگر آپ کو پھر بھی اس کی ضرورت ہے، تو اس سے بہت وقت اور اعصاب کو بچانے میں مدد ملے گی۔ آپکی توجہ کا شکریہ!

استعمال شدہ ذرائع کی فہرست۔

ماخذ: www.habr.com