MS SQL సర్వర్ యొక్క కొత్త వెర్షన్ నుండి పాత సంస్కరణకు బ్యాకప్ డేటాను బదిలీ చేస్తోంది

పూర్వచరిత్ర

ఒకసారి, బగ్‌ని పునరుత్పత్తి చేయడానికి, నాకు ప్రొడక్షన్ డేటాబేస్ బ్యాకప్ అవసరం.

నా ఆశ్చర్యానికి, నేను ఈ క్రింది పరిమితులను ఎదుర్కొన్నాను:

  1. డేటాబేస్ బ్యాకప్ వెర్షన్‌లో చేయబడింది SQL సర్వర్ X మరియు నాతో అనుకూలంగా లేదు SQL సర్వర్ X.
  2. నా పని కంప్యూటర్‌లో OS ఉంది విండోస్ 7కాబట్టి నేను అప్‌డేట్ చేయలేకపోయాను SQL సర్వర్ వెర్షన్ 2016 వరకు
  3. సపోర్టు చేయబడిన ప్రోడక్ట్ గట్టి కపుల్డ్ లెగసీ ఆర్కిటెక్చర్‌తో కూడిన పెద్ద సిస్టమ్‌లో భాగం మరియు ఇతర ఉత్పత్తులు మరియు స్థావరాలను కూడా యాక్సెస్ చేసింది, కనుక ఇది మరొక స్టేషన్‌కి విస్తరించడానికి చాలా సమయం పట్టవచ్చు.

పై విషయాలను పరిశీలిస్తే, ప్రామాణికం కాని పరిష్కారాల అండదండలకు సమయం ఆసన్నమైందని నేను నిర్ధారణకు వచ్చాను.

బ్యాకప్ నుండి డేటాను పునరుద్ధరిస్తోంది

నేను వర్చువల్ మిషన్‌ని ఉపయోగించాలని నిర్ణయించుకున్నాను ఒరాకిల్ VM VirtualBox Windows 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