የመጠባበቂያ ውሂብን ከአዲሱ የ MS SQL አገልጋይ ወደ አሮጌው ስሪት በማስተላለፍ ላይ

prehistory

አንዴ፣ ስህተትን እንደገና ለማባዛት፣ የምርት ዳታቤዝ መጠባበቂያ ያስፈልገኝ ነበር።

የሚገርመኝ፣ የሚከተሉትን ገደቦች ውስጥ ገባሁ።

  1. የመረጃ ቋቱ ምትኬ በስሪት ላይ ተሠርቷል። SQL Server 2016 እና ከእኔ ጋር ተኳሃኝ አልነበረም SQL Server 2014.
  2. በስራዬ ኮምፒዩተር ላይ፣ ጥቅም ላይ የዋለው ስርዓተ ክወና ነበር። Windows 7ስለዚህ ማዘመን አልቻልኩም SQL Server እስከ 2016 ስሪት ድረስ
  3. የሚደገፈው ምርት በጥብቅ የተጣመረ የቅርስ አርክቴክቸር ያለው የትልቅ ስርዓት አካል ነበር እና እንዲሁም ሌሎች ምርቶችን እና መሠረቶችን ተናግሯል፣ ስለዚህ ወደ ሌላ ጣቢያ ለማሰማራት በጣም ረጅም ጊዜ ሊወስድ ይችላል።

ከላይ ያለውን ግምት ውስጥ በማስገባት ደረጃውን የጠበቀ የመፍትሄ ሃሳቦችን ለመቅረፍ ጊዜው አሁን ነው ወደሚል መደምደሚያ ደርሻለሁ።

ከመጠባበቂያ ውሂብ ወደነበረበት በመመለስ ላይ

ምናባዊ ማሽን ለመጠቀም መርጫለሁ። Oracle VM VirtualBox በዊንዶውስ 10 (ለ Edge አሳሹ የሙከራ ምስል ማንሳት ይችላሉ እዚህ). SQL Server 2016 በቨርቹዋል ማሽኑ ላይ ተጭኗል እና የመተግበሪያው ዳታቤዝ ከመጠባበቂያው ተመልሷል (መመሪያ).

በምናባዊ ማሽን ላይ የ SQL አገልጋይ መዳረሻን በማዋቀር ላይ

በመቀጠል የSQL አገልጋይን ከውጭ ለማግኘት አንዳንድ እርምጃዎችን መውሰድ አስፈላጊ ነበር፡-

  1. ለፋየርዎል፣ የወደብ ጥያቄዎችን ለመዝለል ደንብ ያክሉ 1433.
  2. የአገልጋዩ መዳረሻ በዊንዶውስ ማረጋገጫ ሳይሆን በSQL በኩል መግቢያ እና የይለፍ ቃል (መዳረሻን ማዋቀር ቀላል ነው) መሆኑ ተፈላጊ ነው። ነገር ግን፣ በዚህ አጋጣሚ፣ የ SQL ማረጋገጫን በ SQL አገልጋይ ባህሪያት ውስጥ ለማንቃት ማስታወስ ያስፈልግዎታል።
  3. በትሩ ላይ በ SQL አገልጋይ ላይ በተጠቃሚ ቅንብሮች ውስጥ የተጠቃሚ ካርታ ስራ ለተመለሰው የውሂብ ጎታ የተጠቃሚውን ሚና ይግለጹ db_ደህንነት አስተዳዳሪ.

የውሂብ ማስተላለፍ

በእውነቱ ፣ የውሂብ ማስተላለፍ ራሱ ሁለት ደረጃዎችን ያቀፈ ነው-

  1. የውሂብ ንድፍ ማስተላለፍ (ሰንጠረዦች, እይታዎች, የተከማቹ ሂደቶች, ወዘተ.)
  2. ውሂቡን በራሱ በማስተላለፍ ላይ

የውሂብ ንድፍ ማስተላለፍ

የሚከተሉትን ተግባራት እናከናውናለን-

  1. እንመርጣለን ተግባራት -> ስክሪፕቶችን ይፍጠሩ ለተንቀሳቃሽ መሠረት.
  2. ለማስተላለፍ የሚያስፈልጉዎትን ነገሮች ይምረጡ ወይም ነባሪውን ዋጋ ይተዉት (በዚህ አጋጣሚ ለሁሉም የውሂብ ጎታ እቃዎች ስክሪፕቶች ይፈጠራሉ).
  3. ስክሪፕቱን ለማስቀመጥ ቅንብሮችን ይግለጹ። ስክሪፕቱን በአንድ የዩኒኮድ ፋይል ውስጥ ለማስቀመጥ በጣም ምቹ ነው። ከዚያ, ውድቀት በሚከሰትበት ጊዜ, ሁሉንም እርምጃዎች እንደገና መድገም አያስፈልግዎትም.

አንዴ ስክሪፕቱ ከተቀመጠ በኋላ የሚፈለገውን መሰረት ለመፍጠር በዋናው SQL Server (አሮጌው ስሪት) ላይ ሊሄድ ይችላል።

ማስጠንቀቂያ ስክሪፕቱን ከፈጸሙ በኋላ ከመጠባበቂያው እና በስክሪፕቱ የተፈጠረውን የውሂብ ጎታ በመረጃ ቋቱ ቅንጅቶች መካከል ያለውን ግንኙነት ማረጋገጥ ያስፈልግዎታል። በእኔ ሁኔታ፣ በስክሪፕቱ ውስጥ ምንም አይነት የCOLLATE መቼት አልነበረም፣ይህም መረጃን በማስተላለፍ እና በታምቡር ሲጨፍሩ ወደ ውድቀት አመራ።

የውሂብ ማስተላለፍ

ውሂብ ከማስተላለፍዎ በፊት በመረጃ ቋቱ ላይ ያሉትን ሁሉንም ገደቦች ቼክ ማሰናከል አለብዎት።

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

የውሂብ ማስተላለፍ የሚከናወነው የውሂብ ማስመጣት አዋቂን በመጠቀም ነው። ተግባራት -> ውሂብ አስመጣ በስክሪፕቱ የተፈጠረው ዳታቤዝ በሚገኝበት በSQL አገልጋይ ላይ፡-

  1. የግንኙነት ቅንብሮችን ከምንጩ ጋር ይግለጹ (SQL Server 2016 በቨርቹዋል ማሽን ላይ)። የውሂብ ምንጭ ተጠቀምኩኝ የ SQL አገልጋይ ቤተኛ ደንበኛ እና ከላይ የተጠቀሰው የ SQL ማረጋገጫ.
  2. ለመድረሻው የግንኙነት ቅንብሮችን ይግለጹ (SQL Server 2014 በአስተናጋጅ ማሽን ላይ)።
  3. በመቀጠል ካርታውን ያዘጋጁ. ሁሉም መመረጥ አለባቸው ማንበብ ብቻ አይደለም። ነገሮች (ለምሳሌ እይታዎች መመረጥ አያስፈልጋቸውም)። እንደ ተጨማሪ አማራጮች, ይምረጡ "ወደ ማንነት አምዶች ማስገባት ፍቀድ"እንደነዚህ ዓይነት ጥቅም ላይ ከዋሉ.
    ማስጠንቀቂያ ከሆነ, ብዙ ጠረጴዛዎችን ለመምረጥ እና ንብረታቸውን ለማዘጋጀት ሲሞክሩ "ወደ ማንነት አምዶች ማስገባት ፍቀድ" ንብረቱ ከተመረጡት ጠረጴዛዎች ውስጥ ቢያንስ ለአንዱ ተዘጋጅቷል, መገናኛው ንብረቱ አስቀድሞ ለተመረጡት ጠረጴዛዎች ሁሉ እንደተዘጋጀ ያሳያል. ይህ እውነታ ግራ የሚያጋባ እና ወደ ስደት ስህተቶች ሊያመራ ይችላል.
  4. ዝውውሩን እንጀምራለን.
  5. የእገዳ ፍተሻን ወደነበረበት በመመለስ ላይ፡-
    EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'

ማንኛውም ስህተቶች ከተከሰቱ, ቅንብሮቹን እንፈትሻለን, ከስህተቶች ጋር የተፈጠረውን የውሂብ ጎታ እንሰርዛለን, ከስክሪፕቱ ውስጥ እንደገና እንፈጥራለን, እርማቶችን እናደርጋለን እና የውሂብ ዝውውሩን ይድገሙት.

መደምደሚያ

ይህ ተግባር በጣም አልፎ አልፎ የሚከሰት እና ከላይ በተጠቀሱት ገደቦች ምክንያት ብቻ ነው. በጣም የተለመደው መፍትሄ የ SQL አገልጋይን ማሻሻል ወይም የመተግበሪያው አርክቴክቸር ከፈቀደ ከሩቅ አገልጋይ ጋር መገናኘት ነው። ሆኖም ማንም ሰው ከውርስ ኮድ እና ከደካማ የጥራት ልማት ጠማማ እጆች የተጠበቀ አይደለም። ይህንን መመሪያ እንደማትፈልጉ ተስፋ አደርጋለሁ, ነገር ግን አሁንም ከፈለጉ, ብዙ ጊዜ እና ነርቮች ለመቆጠብ ይረዳል. ለሰጠህው አትኩሮት እናመሰግናለን!

ጥቅም ላይ የዋሉ ምንጮች ዝርዝር

ምንጭ: hab.com