د MS SQL سرور له نوي نسخې څخه زاړه نسخې ته د بیک اپ ډیټا لیږدول

له تاریخ څخه دمخه

یوځل ، د بګ بیا تولید لپاره ، ما د تولید ډیټابیس بیک اپ ته اړتیا درلوده.

زما د حیرانتیا لپاره، زه لاندې محدودیتونو ته ورغلم:

  1. د ډیټابیس بیک اپ په نسخه کې جوړ شوی و د SQL سرور 2016 او زما سره مطابقت نه درلود د SQL سرور 2014.
  2. زما په کاري کمپیوټر کې، OS کارول شوی و Windows 7نو زه نشم کولی تازه کړم SQL سرور تر 2016 نسخه پورې
  3. ملاتړ شوی محصول د یو لوی سیسټم برخه وه چې په کلکه جوړه شوې میراثي جوړښت سره او د نورو محصولاتو او اډو سره یې هم خبرې کولې، نو دا به ډیر وخت ونیسي چې دا بل سټیشن ته ځای په ځای کړي.

پورته په پام کې نیولو سره، زه دې پایلې ته ورسیدم چې د غیر معیاري حلونو د کرچ لپاره وخت راغلی دی.

د بیک اپ څخه ډاټا بیرته راګرځول

ما د مجازی ماشین کارول غوره کړل اوریکل VM VirtualBox د وینډوز 10 سره (تاسو کولی شئ د ایج براوزر لپاره د ازموینې عکس واخلئ له دې ځایه). د SQL سرور 2016 په مجازی ماشین کې نصب شوی او د غوښتنلیک ډیټابیس د بیک اپ څخه بحال شوی (لارښود).

په مجازی ماشین کې SQL سرور ته د لاسرسي تنظیم کول

بیا، دا اړینه وه چې ځینې ګامونه پورته کړئ ترڅو وکوالی شئ له بهر څخه SQL سرور ته لاسرسی ومومئ:

  1. د فایر وال لپاره، د پورټ غوښتنې پریښودلو لپاره یو قاعده اضافه کړئ 1433.
  2. دا د پام وړ ده چې سرور ته لاسرسی د وینډوز تصدیق کولو له لارې نه ځي ، مګر د SQL له لارې د ننوتلو او پاسورډ په کارولو سره (د لاسرسي تنظیم کول اسانه دي). په هرصورت ، پدې حالت کې ، تاسو اړتیا لرئ په یاد ولرئ چې د SQL سرور ملکیتونو کې د SQL تصدیق فعال کړئ.
  3. په ټب کې په SQL سرور کې د کارونکي تنظیماتو کې د کارن نقشه کول د بحال شوي ډیټابیس لپاره د کارونکي رول مشخص کړئ db_securityadmin.

د معلوماتو لیږد

په حقیقت کې، د معلوماتو لیږد پخپله دوه مرحلې لري:

  1. د ډیټا سکیما لیږد (میزونه، لیدونه، ذخیره شوي پروسیجرونه، او نور)
  2. پخپله د معلوماتو لیږدول

د ډیټا سکیما لیږد

موږ لاندې عملیات ترسره کوو:

  1. موږ غوره کوو دندې -> سکریپټونه جوړ کړئ د پورټ ایبل بیس لپاره.
  2. هغه توکي وټاکئ چې تاسو ورته اړتیا لرئ د ډیفالټ ارزښت لیږد یا پریږدئ (په دې حالت کې به د ټولو ډیټابیس شیانو لپاره سکریپټونه رامینځته شي).
  3. د سکریپټ خوندي کولو لپاره تنظیمات مشخص کړئ. دا خورا اسانه دی چې سکریپټ په یو یونیکوډ فایل کې خوندي کړئ. بیا، د ناکامۍ په صورت کې، تاسو اړتیا نلرئ ټول ګامونه بیا تکرار کړئ.

یوځل چې سکریپټ خوندي شي ، دا د اړتیا وړ اساس رامینځته کولو لپاره په اصلي SQL سرور (زاړه نسخه) کې پرمخ وړل کیدی شي.

پاملرنه: د سکریپټ اجرا کولو وروسته ، تاسو اړتیا لرئ د بیک اپ څخه د ډیټابیس تنظیماتو او د سکریپټ لخوا رامینځته شوي ډیټابیس ترمینځ اړیکې چیک کړئ. زما په قضیه کې، په سکریپټ کې د COLLATE لپاره هیڅ ترتیب شتون نه درلود، کوم چې د ضمیمه سکریپټ په کارولو سره د ډیټابیس د بیا جوړولو لپاره د ډیټابیس سره د ډیټا لیږدولو او نڅا کولو په وخت کې د ناکامۍ المل شو.

د معلوماتو لیږد

د معلوماتو لیږدولو دمخه، تاسو باید په ډیټابیس کې د ټولو محدودیتونو چک غیر فعال کړئ:

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

د معلوماتو لیږد د ډیټا واردولو وزرډ په کارولو سره ترسره کیږي دندې -> ډیټا وارد کړئ په SQL سرور کې، چیرې چې د سکریپټ لخوا رامینځته شوی ډیټابیس موقعیت لري:

  1. سرچینې ته د پیوستون تنظیمات مشخص کړئ (SQL سرور 2016 په مجازی ماشین کې). ما د معلوماتو سرچینه کارولې د SQL سرور اصلي پیرودونکي او پورته ذکر شوي SQL تصدیق.
  2. د منزل لپاره د پیوستون ترتیبات مشخص کړئ (په کوربه ماشین کې د SQL سرور 2014).
  3. بیا، نقشه ترتیب کړئ. ټول باید وټاکل شي نه یوازې لوستل توکي (د بیلګې په توګه، لید ته اړتیا نشته چې انتخاب شي). د اضافي اختیارونو په توګه، غوره کړئ "د هویت په کالمونو کې د ننوتلو اجازه ورکړئ"که دا ډول کارول کیږي.
    پاملرنه: که، کله چې هڅه وکړئ څو میزونه غوره کړئ او د دوی ملکیت تنظیم کړئ "د هویت په کالمونو کې د ننوتلو اجازه ورکړئ" ملکیت لا دمخه لږترلږه د یو ټاکل شوي جدول لپاره ټاکل شوی ، ډیالوګ به په ګوته کړي چې ملکیت دمخه د ټولو ټاکل شوي میزونو لپاره ټاکل شوی. دا حقیقت کیدای شي مغشوش وي او د مهاجرت غلطیو لامل شي.
  4. موږ لیږد پیل کوو.
  5. د خنډونو بیا رغونه چک کول:
    EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'

که کومه تېروتنه رامنځته شي، موږ ترتیبات ګورو، د غلطیو سره رامینځته شوي ډیټابیس حذف کړئ، له سکریپټ څخه یې بیا جوړ کړئ، سمونونه وکړئ او د معلوماتو لیږد تکرار کړئ.

پایلې

دا کار خورا نادر دی او یوازې د پورته محدودیتونو له امله پیښیږي. ترټولو عام حل د SQL سرور اپ گریڈ کول یا د ریموټ سرور سره وصل کول دي که چیرې د غوښتنلیک جوړښت ورته اجازه ورکړي. په هرصورت، هیڅوک د میراثي کوډ او د خراب کیفیت پراختیا د کرغیړن لاسونو څخه خوندي ندي. زه امید لرم چې تاسو به دې لارښوونې ته اړتیا ونلرئ ، مګر که تاسو لاهم ورته اړتیا لرئ ، دا به د ډیر وخت او اعصابو خوندي کولو کې مرسته وکړي. له پاملرنې څخه مو مننه!

د کارول شویو سرچینو لیست

سرچینه: www.habr.com