תרחיש ב': שדרוג לקוח קיים (גרסה נוכחית ועדכונים עתידיים)
שדרוג מערכת אצל לקוח פעיל קיים שונה באופן מהותי מהתקנה נקייה: חלה חובה מוחלטת לשמור על 100% מנתוני העבר, היסטוריית העסקאות, יתרות הקופות, כרטסות הלקוחות, וסריקות המסמכים ללא שום פגיעה, שינוי או מחיקה!
במקרים רבים (ממש כפי שאירע במעבר לגרסה 7.4.5.6 ומעלה, וכפי שיקרה בעדכוני גרסה עתידיים), הגרסה החדשה של קובץ ההפעלה (FinUp.exe) כוללת מסכים חדשים, דרישות רגולטוריות עדכניות או תכונות מתקדמות המצריכות טבלאות חדשות, עמודות נוספות, מפתחות זרים או עדכון תצוגות (Views). אם קבצי התוכנה יופעלו מול מסד נתונים ישן מבלי שסכימת המסד תעודכן, המערכת תיכשל ותקרוס בשגיאות SQL (לדוגמה: Invalid column name 'category_code' או Invalid column name 'public_complaints_officer_name').
לשם כך פותח נוהל שדרוג סכימה מובנה, מבוקר ובטוח לחלוטין.
4.1 עקרונות ברזל לשמירה על נתוני עבר
- איסור מוחלט על פעולות הרסניות (No-Drop Policy): בשום תרחיש שדרוג אין להריץ
DROP TABLE,TRUNCATEאו פקודות מחיקת עמודות קיימות. - אידמפוטנטיות מלאה (Idempotency): כל סקריפט שדרוג נכתב כך שניתן להריצו פעם אחת, פעמיים או עשר פעמים – מבלי לייצר שגיאות או כפילויות (שימוש קפדני ב-
IF NOT EXISTS/IF OBJECT_ID(...) IS NULL). - אטומיות וטרנזקציות (Atomic Transactions): כלל עדכוני הסכימה עטופים ב-
BEGIN TRANSACTIONו-XACT_ABORT ON. אם פקודה אחת נכשלת, ה-SQL מבצעROLLBACKמיידי ומחזיר את המסד למצבו המקורי ללא פגע. - שימור מפתחות זרים תקין: אין להחיל Foreign Key על עמודה חדשה לפני שמוודאים שאין ברשומות הקיימות ערכים יתומים שעלולים להכשיל את ההחלה.
- סנכרון קטלוגים ללא דריסת התאמות אישיות: הוספת קטלוגים רגולטוריים (כגון סוגי בטוחות משרד המשפטים) מתבצעת באמצעות
MERGEאו בדיקת קיום קוד, כדי לא לדרוס הגדרות ספציפיות של הלקוח.
4.2 שלב 1: גיבוי מונע והשבתת תהליכים (חובה לפני כל פעולה!)
- ביצוע גיבוי מלא של מסד הנתונים: פתח את SSMS או הרץ פקודת SQL ישירה:
BACKUP DATABASE [iChange] TO DISK = N'C:\ChangeBox\Backup\iChange_PreUpgrade_Backup.bak' WITH INIT, STATS = 10; - גיבוי תיקיית האפליקציה הקיימת: שמור עותק מלא של תיקיית ה-Bin הקיימת (כולל קובצי התצורה):
Copy-Item -Path "C:\ChangeBox\Bin" -Destination "C:\ChangeBox\Bin_Backup_OldVersion" -Recurse -Force - סגירת כלל תהליכי המערכת בכל התחנות: ודא שבתחנה הראשית ובכל תחנות הקצה סגורים התהליכים הבאים:
FinUp.exe(תוכנת הקופה הראשית; בתחנה שטרם שודרגה לשם הנוכחי ייתכן שהתהליך הפעיל נושא את שם קובץ ההפעלה הקודם – גם הוא נסגר)ChangeboxService.exe(שירות הרקע המקומי)iChangeScanner.exe(מנהל התקן סורק השקים)
4.3 שלב 2: שדרוג סכימת מסד הנתונים (טבלאות ועמודות חדשות ללא פגיעה בנתונים)
שדרוג סכימת מסד הנתונים מתבצע באמצעות כלי השדרוג שמספק בית התוכנה FinUp עם כל גרסה. הכלי מבצע גיבוי מונע, מחיל את השינויים באופן אידמפוטנטי בתוך טרנזקציה אחת (כשל מחזיר את המסד למצבו המקורי), ומאמת שנתוני הלקוח נשמרו במלואם. הוראות ההרצה המדויקות מצורפות לחבילת הגרסה; לשאלות פנו לתמיכה.
4.4 שלב 3: פריסת קובצי הגרסה החדשה (החלפת Bin מבוקרת)
- העתק את קובצי ה-Bin המעודכנים (מתוך חבילת ההפצה שסיפק בית התוכנה FinUp) אל
C:\ChangeBox\Bin. - אשר החלפת קבצים עבור קובצי ההפעלה והספריות:
FinUp.exeChangeboxLib.dll- ספריות צד שלישי
- אזהרה חמורה: שמור על קובצי התצורה האישיים של הלקוח (
FinUp.exe.config; בשדרוג הראשון לשם הנוכחי מעביר מתקין FinUp את ההגדרות מקובץ התצורה הקודם אל הקובץ החדש) – אין לדרוס את מחרוזת החיבור או את מזהי הסניף והקופה שהוגדרו עבורו!
4.6 שלב 5: בדיקת שפיות ואימות סופי לאחר שדרוג (Post-Upgrade Sanity Verification)
- הפעלת התוכנה: הפעל את
FinUp.exeבתחנה הראשית. - התחברות: התחבר עם שם משתמש וסיסמה קיימים של הלקוח.
- אימות עסקאות עבר: נווט לתפריט תשאול -> תנועות (רשימת פעולות). ודא שכל עסקאות העבר של הלקוח מוצגות ברשת הנתונים במלואן עם כל הסכומים, השקים והתאריכים.
- אימות מסך בחירת סניף: ודא שלחיצה על כפתור בחירת הסניף/קופה נטענת ללא שגיאות SQL (מוכיח שעמודות
dealersנקלטו בהצלחה). - אימות ניכיון שקים: פתח פעולת ניכיון קיימת וודא שמסך ניכיון השקים עולה בצורה חלקה וללא שגיאת SQL.
- עסקה לדוגמה: בצע שכפול פעולה אחת או הדפסת העתק קבלה לוודא פעילות תקינה מול המדפסת והסורק.
- שחרור לעבודה: אשר את המערכת והעבר את התחנות לפעילות עסקית רגילה.