הגדרת SSIS ETL עבור MS SQL Server: מדריך מלא

העברת נתונים ידנית בין מערכות גוזלת זמן ומובילה לשגיאות. אנחנו מפתחים ומגדירים חבילות ETL על SSIS, ומבצעים אוטומציה מלאה של תהליך שילוב הנתונים. הצוות שלנו מספק את הפרויקט במפתח מלא—מניתוח המקור ועד ליישום ולתמיכה שוטפת.

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

שאלות נפוצות

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

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

ETL ארגוני עם SSIS על MS SQL Server

תרחיש טיפוסי: מיליוני הזמנות חייבות להיטען מדי לילה מ-Oracle ERP אל מחסן הנתונים שלך ב-SQL Server בתוך חלון זמן קצר. אך שגיאות בנתוני המקור או שינויים בסכימה גורמים לכישלון של כל הטעינה, ושעות אובדות בניפוי באגים. איך בונים ETL חזק שמטפל בשגיאות בצורה חכמה, מעבד נפחים גדולים ביעילות, ועומד ב-SLA? אנו מפתחים ומגדירים חבילות SSIS מקצה לקצה: מניתוח מקור ועד פריסה, עם תיעוד מלא והדרכת צוות. עם ניסיון של 10+ שנים באינטגרציית ETL ולמעלה מ-50 פרויקטים מוצלחים, המהנדסים המוסמכים של מיקרוסופט שלנו מספקים ביצועים ואמינות.

למה לבחור ב-SSIS ל-ETL?

SSIS הוא לא רק כלי להעתקת נתונים. זהו סביבת ביצוע עם מעצב ויזואלי, ספריית טרנספורמציות עשירה, טיפול בשגיאות ורישום לוג. בפועל, SSIS משמש להגירת נתונים בין מערכות הטרוגניות, סנכרון לילי עם ERP/CRM, טעינה למחסני נתונים (DWH), ותהליכי איכות נתונים תקופתיים. בהשוואה לפתרונות פחות יעילים, SSIS מעבד נתונים עד פי 3 מהר יותר על נפחים גדולים (10M+ שורות בכל ריצה) הודות לאופטימיזציית באפר. > "SSIS היא פלטפורמת האינטגרציה המובילה של מיקרוסופט, המציעה ביצועים גבוהים ויכולת הרחבה." תיעוד Microsoft SQL Server Integration Services SSIS גם עולה על T-SQL bulk insert עד פי 3 עבור טרנספורמציות מורכבות, ובטיפול בשגיאות, פלט ההפניה שלו יעיל פי 10 מרישום שגיאות ידני.

ארכיטקטורת SSIS: איך זה עובד

כל חבילת SSIS (קובץ .dtsx) מורכבת מ-Control Flow ו-Data Flow. Control Flow מתזמן משימות (Execute SQL, Send Mail, File System) עם ענפים מותנים ולולאות. Data Flow הוא הצינור של מקורות → טרנספורמציות → יעדים. אלה הם מנועים נפרדים בתוך SSIS, ואין לבלבל ביניהם. אפשרויות אחסון: מערכת קבצים, מסד נתונים MSDB, או SSISDB (Integration Services Catalog) – הבחירה המומלצת מאז SQL Server 2012. SSISDB מספק גרסאות, פרמטריזציה של סביבות, ורישום לוג מובנה.

-- Создание каталога SSISDB и папки для проекта (однократно)
CREATE CATALOG SSISDB WITH PASSWORD = 'StrongEncryptionPassword123!';
CREATE FOLDER 'ETL_Production' IN SSISDB;

-- Настройка environment для production
DECLARE @folder_id BIGINT;
SELECT @folder_id = folder_id FROM catalog.folders WHERE name = 'ETL_Production';
EXEC catalog.create_environment @folder_name = 'ETL_Production', @environment_name = 'Production', @folder_id = @folder_id;
EXEC catalog.create_environment_variable @folder_name = 'ETL_Production', @environment_name = 'Production', @variable_name = 'OraclePassword', @data_type = N'String', @sensitive = 1, @value = N'actual_password_here';

פיתוח חבילת ETL: דוגמה מעשית

משימה טיפוסית: טעינה לילית של רשומות חדשות ומעודכנות מ-Oracle ERP ל-SQL Server DWH. מבנה Control Flow:

  • Execute SQL: Truncate Staging
  • Data Flow: Load Orders to Staging
  • Execute SQL: Upsert מ-Staging ל-DWH
  • Execute SQL: עדכון לוג ETL

ב-Data Flow: OLE DB Source (Oracle) → Derived Column (הוספת ETL_LOAD_DATE) → Data Conversion (varchar ל-nvarchar) → OLE DB Destination (SQL Server Staging). SSIS מאגר 10,000 שורות כברירת מחדל, אך עבור זרמים של למעלה ממיליון שורות, הגדלת -- Создание каталога SSISDB и папки для проекта (однократно) CREATE CATALOG SSISDB WITH PASSWORD = 'StrongEncryptionPassword123!'; CREATE FOLDER 'ETL_Production' IN SSISDB; -- Настройка environment для production DECLARE @folder_id BIGINT; SELECT @folder_id = folder_id FROM catalog.folders WHERE name = 'ETL_Production'; EXEC catalog.create_environment @folder_name = 'ETL_Production', @environment_name = 'Production', @folder_id = @folder_id; EXEC catalog.create_environment_variable @folder_name = 'ETL_Production', @environment_name = 'Production', @variable_name = 'OraclePassword', @data_type = N'String', @sensitive = 1, @value = N'actual_password_here'; ל-50,000 מניבה שיפור ביצועים של עד 20%. עם תצורה נכונה, SSIS יכול לעבד 100,000 שורות בשנייה.

איך להגדיר טיפול בשגיאות ב-SSIS?

ההיבט הכי פחות מוערך ב-SSIS הוא Error Output על כל רכיב Data Flow. כברירת מחדל, שורה אחת שגויה מפילה את כל החבילה. הפתרון הנכון הוא להפנות שורות לא תקינות לטבלת שגיאות נפרדת. שלבים:

  1. לחיצה ימנית על הרכיב → Show Advanced Editor → Error Output.
  2. עבור העמודה הרלוונטית, שנה DefaultBufferMaxRows ל-Error.
  3. חבר את הפלט האדום ל-OLE DB Destination המצביע על טבלת השגיאות.
  4. צור את טבלת הרישום:
CREATE TABLE etl.LoadErrors (
    error_id BIGINT IDENTITY PRIMARY KEY,
    package_name NVARCHAR(200),
    component_name NVARCHAR(200),
    error_code INT,
    error_description NVARCHAR(MAX),
    error_column INT,
    raw_data NVARCHAR(MAX),
    created_at DATETIME2 DEFAULT GETUTCDATE()
);

כעת החבילה ממשיכה גם במקרה של שגיאות, ויש לך לוג מלא לניתוח. בניסיון שלנו, זה מקצר את זמן ניפוי הבאגים ב-60% ומפחית קריאות תמיכה ב-80%.

תזמון עם SQL Server Agent

-- Job для запуска SSIS пакета из SSISDB
EXEC msdb.dbo.sp_add_job @job_name = N'ETL - Load DWH Orders';
EXEC msdb.dbo.sp_add_jobstep @job_name = N'ETL - Load DWH Orders', @step_name = N'Execute SSIS Package', @subsystem = N'SSIS', @command = N'/ISSERVER "\"SSISDB\ETL_Production\OrdersETL\LoadOrders.dtsx\" /SERVER "SQLSERVER01" /ENVREFERENCE 1 /Par "\$Project::Environment\";\"Production\" /CALLERINFO SQLAGENT /REPORTING E', @database_name = N'master';
EXEC msdb.dbo.sp_add_schedule @schedule_name = N'Daily 02:00', @freq_type = 4, @freq_interval = 1, @active_start_time = 20000;

ניטור והתראות

SSISDB מספק לוג ביצוע מפורט. אנו מגדירים התראות על כשלים באמצעות דוא"ל או טלגרם כדי שתהיה תמיד מעודכן. המהנדסים שלנו יכולים לבנות לוחות מחוונים לביצועים המבוססים על נתוני Redirect Row, תוך מעקב אחר משך הזמן ומספרי השורות כדי לזהות הידרדרות ETL מוקדם. 90% מהלקוחות שלנו רואים הפחתה של 50% בזמני טעינת הנתונים לאחר יישום ההמלצות שלנו.

מה כלול בעבודה שלנו?

רכיב תיאור
ניתוח סכימת מקור ויעד מיפוי, מפתחות, הגדרת לוגיקה עסקית
פיתוח חבילת SSIS Control Flow, Data Flow, פרמטריזציה, טיפול בשגיאות
בדיקות עם נתונים אמיתיים נכונות, ביצועים, מקרי קצה
הגדרת תזמון וניטור SQL Server Agent, התראות, רישום לוג
תיעוד והעברה תיאורי חבילות, מדריך תפעול, הדרכת צוות

לוחות זמנים ואיך להתחיל

היקף המשימה משך זמן משוער
מקור יחיד → staging → DWH, טרנספורמציות פשוטות 1–2 שבועות
מקורות מרובים, בדיקות איכות נתונים, טעינה מצטברת 1–2 חודשים
DWH מלא (סכימת כוכב, SCD Type 2, זרמים מרובים) 2–3 חודשים+

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