MS SQL ಸರ್ವರ್‌ನ ಹೊಸ ಆವೃತ್ತಿಯಿಂದ ಹಳೆಯ ಆವೃತ್ತಿಗೆ ಬ್ಯಾಕಪ್ ಡೇಟಾವನ್ನು ವರ್ಗಾಯಿಸಲಾಗುತ್ತಿದೆ

ಪೂರ್ವೇತಿಹಾಸದ

ಒಮ್ಮೆ, ದೋಷವನ್ನು ಪುನರುತ್ಪಾದಿಸಲು, ನನಗೆ ಉತ್ಪಾದನಾ ಡೇಟಾಬೇಸ್‌ನ ಬ್ಯಾಕಪ್ ಅಗತ್ಯವಿದೆ.

ನನ್ನ ಆಶ್ಚರ್ಯಕ್ಕೆ, ನಾನು ಈ ಕೆಳಗಿನ ಮಿತಿಗಳನ್ನು ಎದುರಿಸಿದೆ:

  1. ಡೇಟಾಬೇಸ್ ಬ್ಯಾಕಪ್ ಅನ್ನು ಆವೃತ್ತಿಯಲ್ಲಿ ಮಾಡಲಾಗಿದೆ SQL ಸರ್ವರ್ 2016 ಮತ್ತು ನನ್ನೊಂದಿಗೆ ಹೊಂದಿಕೆಯಾಗಲಿಲ್ಲ SQL ಸರ್ವರ್ 2014.
  2. ನನ್ನ ಕೆಲಸದ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ, OS ಅನ್ನು ಬಳಸಲಾಗಿದೆ ವಿಂಡೋಸ್ 7ಹಾಗಾಗಿ ನವೀಕರಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ SQL ಸರ್ವರ್ ಆವೃತ್ತಿ 2016 ವರೆಗೆ
  3. ಬೆಂಬಲಿತ ಉತ್ಪನ್ನವು ಬಿಗಿಯಾಗಿ ಜೋಡಿಸಲಾದ ಲೆಗಸಿ ಆರ್ಕಿಟೆಕ್ಚರ್‌ನೊಂದಿಗೆ ದೊಡ್ಡ ವ್ಯವಸ್ಥೆಯ ಭಾಗವಾಗಿತ್ತು ಮತ್ತು ಇತರ ಉತ್ಪನ್ನಗಳು ಮತ್ತು ಬೇಸ್‌ಗಳೊಂದಿಗೆ ಮಾತನಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ ಅದನ್ನು ಮತ್ತೊಂದು ನಿಲ್ದಾಣಕ್ಕೆ ನಿಯೋಜಿಸಲು ಬಹಳ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಬಹುದು.

ಮೇಲಿನದನ್ನು ಪರಿಗಣಿಸಿ, ಪ್ರಮಾಣಿತವಲ್ಲದ ಪರಿಹಾರಗಳ ಊರುಗೋಲುಗಳ ಸಮಯ ಬಂದಿದೆ ಎಂದು ನಾನು ತೀರ್ಮಾನಕ್ಕೆ ಬಂದಿದ್ದೇನೆ.

ಬ್ಯಾಕಪ್‌ನಿಂದ ಡೇಟಾವನ್ನು ಮರುಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ

ನಾನು ವರ್ಚುವಲ್ ಯಂತ್ರವನ್ನು ಬಳಸಲು ನಿರ್ಧರಿಸಿದೆ ಒರಾಕಲ್ ವಿಎಂ ವರ್ಚುವಲ್ಬಾಕ್ಸ್ 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