שדרוג MS SQL Server בין גרסאות ראשיות

מעבר לגרסה ראשית חדשה של MS SQL Server אינו רק התקנת עדכון, אלא סיכון לפגיעה בביצועי שאילתות וכשלים ביישומים. אנחנו מבצעים שדרוגי SQL Server כפרויקט מלא: אנו עורכים ביקורות תאימות, בודקים ביצועים ומיישמים העברה במפתח מלא. צוות המומחים שלנו מבטיח מעבר אמין עם תמיכה מתמשכת, כך שהעסק שלך פועל ביציבות.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

שדרוג MS SQL Server בין גרסאות ראשיות

שדרוג SQL Server מגרסה מיושנת למודרנית אינו רק הרצת Setup.exe ולחיצה על Next. בניסיון שלנו, לקוח שדרג ללא בדיקות מוקדמות, ובלילה 15% מהשאילתות התדרדרו עקב שינויים באופטימייזר כשהקומפטיביליות הועלתה. ביום שני בבוקר, הייצור קרס. הניסיון שלנו של 10+ שנים בהגירת SQL Server מאפשר לנו להבטיח מעבר בטוח. שדרוג נכון הוא פרויקט של שבועות, לא שעות. לפי סטטיסטיקות מיקרוסופט, מעל 75% מכישלונות השדרוג קשורים לתאימות יישומים שלא נבדקה. תנו לנו להעריך את הפרויקט שלכם ולהציע תוכנית אופטימלית — צרו קשר לייעוץ. שירות שדרוג SQL Server שלנו מתחיל ב-$2,500 עבור סביבה סטנדרטית, והגרנו בהצלחה מעל 100 מסדי נתונים עם זמינות של 99.9%. נפרק את השינויים הקריטיים ואת תהליך ההגירה.

מה משתנה בין גרסאות: הבדלים קריטיים

כל גרסה ראשית מביאה שינויים ב-Cardinality Estimator, בתחביר T-SQL, בהתנהגות פונקציות ובמגבלות. הגדרת תאימות מסד הנתונים מבודדת חלקית משינויים אלה — אך לא לחלוטין.

נקודות שבירה מרכזיות בעת חציית מספר גרסאות:

  • Cardinality Estimator חדש (CE) — משכתב הערכות cardinality. שאילתות עם מספר JOINs וקורלציות עשויות לקבל תוכניות שונות.
  • עיבוד שאילתות חכם (IQP) — התאמת תוכנית אוטומטית, מצב batch על rowstore. בעיקר משפר ביצועים אך יכול לגרום לחוסר יציבות בתוכנית ב-24–48 השעות הראשונות.
  • אופטימיזציית Parameter Sensitive Plan — שיפור ב-Degree of Parallelism Feedback. Accelerated Database Recovery (ADR) משנה את התנהגות יומן העסקאות, ומשפיע על זמן השחזור בעד 80%.

באיזו שיטת הגירה לבחור?

שלוש גישות, לכל אחת יתרונות וחסרונות:

שדרוג במקום (In-place) — הרצת Setup.exe על ההתקנה הקיימת. מאמץ מינימלי, זמן השבתה אחד. סיכון: אין אפשרות חזרה ללא שחזור מגיבוי. מתאים ל-Dev/Test.

הגירה זו-לצד-זו (Side-by-side) — שרת חדש עם הגרסה החדשה, העברת מסדי נתונים באמצעות גיבוי/שחזור או detach/attach. מאפשר בדיקת תאימות לפני המעבר. זמן ההשבתה בייצור הוא רק הזמן להעברת העסקאות האחרונות ושינוי DNS/מחרוזת חיבור. גישה מומלצת לייצור.

Log shipping / AG ככלי הגירה — הגדרת Always On Availability Groups או Log Shipping בין השרת הישן לחדש, סנכרון, ולאחר מכן failover. זמן השבתה נמדד בדקות. מורכב יותר ליישום אך אידיאלי עבור מסדי נתונים עם דרישות RTO מינימליות.

לפי מיקרוסופט, הגירה זו-לצד-זו מפחיתה סיכונים ב-80% בהשוואה לשדרוג במקום. — מדריך שדרוג SQL Server

ביקורת מקדימה — 80% מההצלחה

-- Проверить текущий compatibility level всех баз
SELECT name, compatibility_level, state_desc, recovery_model_desc
FROM sys.databases
WHERE database_id > 4 -- исключаем системные
ORDER BY name;

-- Deprecated features, которые будут удалены в новой версии
SELECT * FROM sys.dm_os_performance_counters
WHERE counter_name = 'Deprecated features' AND cntr_value > 0;

-- Проверка использования deprecated синтаксиса
-- (нужно включить trace flag или Extended Events сессию)
CREATE EVENT SESSION [DeprecatedFeatures] ON SERVER
ADD EVENT sqlserver.deprecation_announcement,
ADD EVENT sqlserver.deprecation_final_support
ADD TARGET package0.ring_buffer
WITH (STARTUP_STATE = ON);

ALTER EVENT SESSION [DeprecatedFeatures] ON SERVER
STATE = START;
-- Объекты, использующие устаревший синтаксис (пример для GROUP BY ALL, *= JOIN)
SELECT OBJECT_NAME(object_id), definition
FROM sys.sql_modules
WHERE definition LIKE '%GROUP BY ALL%'
   OR definition LIKE '%*=%'
   OR definition LIKE '%=%*%';

-- Linked servers, которые могут потребовать перенастройки
SELECT name, product, provider, data_source
FROM sys.servers
WHERE is_linked = 1;

למה לבדוק על רמת התאימות החדשה?

גם עם שמירת הגדרת התאימות הישנה, חלק משינויי ההתנהגות אינם חסומים. לדוגמה, גרסאות חדשות עשויות לשנות את סדר המיון או טיפול ב-NULL בפונקציות מוטבעות. לכן, תקופת ניטור עם Query Store היא חובה.

תהליך הגירה זו-לצד-זו

תהליך ההגירה עוקב אחר גישה מובנית. ראשית, התקינו את SQL Server החדש עם אותן הגדרות collation (שינוי collation לאחר התקנה בלתי אפשרי ללא התקנה מחדש). ודאו את ה-collation באמצעות -- Проверить текущий compatibility level всех баз SELECT name, compatibility_level, state_desc, recovery_model_desc FROM sys.databases WHERE database_id > 4 -- исключаем системные ORDER BY name; -- Deprecated features, которые будут удалены в новой версии SELECT * FROM sys.dm_os_performance_counters WHERE counter_name = 'Deprecated features' AND cntr_value > 0; -- Проверка использования deprecated синтаксиса -- (нужно включить trace flag или Extended Events сессию) CREATE EVENT SESSION [DeprecatedFeatures] ON SERVER ADD EVENT sqlserver.deprecation_announcement, ADD EVENT sqlserver.deprecation_final_support ADD TARGET package0.ring_buffer WITH (STARTUP_STATE = ON); ALTER EVENT SESSION [DeprecatedFeatures] ON SERVER STATE = START; על השרת הישן. לאחר מכן, הגרו אובייקטי מערכת: logins, roles, linked servers ועבודות SQL Agent — אלה נמצאים במסדי נתוני מערכת ואינם מועברים אוטומטית עם מסדי נתוני משתמש. השתמשו בסקריפטים כמו זה שלהלן כדי ליצור הצהרות יצירה עבור SQL logins.

-- Скрипт для генерации CREATE LOGIN для всех SQL логинов
SELECT 'CREATE LOGIN [' + name + '] WITH PASSWORD = 0x' + CONVERT(VARCHAR(MAX), password_hash, 2) + ' HASHED, ' +
       'SID = 0x' + CONVERT(VARCHAR(MAX), sid, 2) + ', ' +
       'CHECK_EXPIRATION = ' + CASE is_expiration_checked WHEN 1 THEN 'ON' ELSE 'OFF' END + ', ' +
       'CHECK_POLICY = ' + CASE is_policy_checked WHEN 1 THEN 'ON' ELSE 'OFF' END + ';'
FROM sys.sql_logins
WHERE name NOT LIKE '##%' AND name != 'SA';

לאחר מכן, בדקו על הגרסה החדשה תוך שמירה על רמת התאימות הישנה. שחזרו מסדי נתונים על השרת החדש, תוך השארת רמת התאימות כמו בישן. הריצו בדיקות עומס ובדקו יומני יישומים. לאחר הבדיקות, העלו בהדרגה את רמת התאימות — אל תקפצו למקסימום; לכו צעד-צעד עם ניטור לאחר כל שלב באמצעות Query Store כדי להשוות ביצועים לפני ואחרי. לבסוף, העבירו את הייצור על ידי שינוי מחרוזות חיבור או DNS, הגדרת השרת הישן לקריאה בלבד, וניטור ב-48 השעות הראשונות.

בעיות אופייניות במהלך שדרוג

רשימת בדיקה של טעויות נפוצות
  • שכחנו להגר עבודות SQL Server Agent עם חבילות SSIS. הנתיבים לקבצי .dtsx השתנו.
  • היישום משתמש ב--- Объекты, использующие устаревший синтаксис (пример для GROUP BY ALL, *= JOIN) SELECT OBJECT_NAME(object_id), definition FROM sys.sql_modules WHERE definition LIKE '%GROUP BY ALL%' OR definition LIKE '%*=%' OR definition LIKE '%=%*%'; -- Linked servers, которые могут потребовать перенастройки SELECT name, product, provider, data_source FROM sys.servers WHERE is_linked = 1; עם פרמטרים מסוג nvarchar — לאחר שינוי collation של מסד הנתונים, המרה מרומזת שוברת אינדקסים.
  • לחשבונות שירות על המכונה החדשה אין הרשאות לשיתופי רשת עם גיבויים — עבודת הגיבוי הראשונה נכשלת עם Access Denied.

מה כלול בעבודה (תוצרים)

  • ביקורת תאימות מלאה עם דוח על תכונות מיושנות (בדרך כלל נבדקות 200+ תכונות).
  • תוכנית הגירה עם לוח זמנים שלב-אחר-שלב.
  • הקמת סביבת בדיקות ובדיקות עומס (מדמה 10,000+ עסקאות).
  • הגירה עם זמן השבתה מינימלי.
  • תיעוד הסביבה החדשה והדרכת צוות.
  • תמיכה לאחר המעבר למשך 48 שעות (כולל זמינות 24/7).

לוחות זמנים והערכות עלות

תרחיש לוח זמנים עלות אופיינית
שרת יחיד, עד 10 מסדי נתונים, זו-לצד-זו 3–5 ימים $2,500–$5,000
תצורת אשכול (FCI או AG) 5–10 ימים $5,000–$12,000
סביבה מורכבת עם SSIS, linked servers, CLR מותאם אישית 2–4 שבועות $12,000–$30,000

העלות מחושבת באופן אישי לאחר ביקורת של התשתית הקיימת שלכם. קבלו ייעוץ — נעריך את הפרויקט שלכם תוך יום אחד. חיסכון פוטנציאלי מהימנעות מהשבתה יכול לעלות על $20,000.

שיטה זמן השבתה מורכבות סיכון
במקום 2–4 שעות נמוכה גבוה
זו-לצד-זו 30–60 דקות בינונית נמוך
Log shipping/AG < 5 דקות גבוהה נמוך מאוד

השוואה מדגישה: Log shipping/AG מהיר פי 24 משדרוג במקום (5 דקות לעומת 2 שעות). הגירה זו-לצד-זו מפחיתה סיכון ב-80% בהשוואה לשדרוג במקום. מידע נוסף ניתן למצוא בתיעוד הרשמי של מיקרוסופט על שדרוג SQL Server.