Ми розробляємо та налаштовуємо ETL-пакети на SSIS для вилучення, перетворення та завантаження даних між системами. З нами ви отримуєте рішення під ключ: від аналізу джерел до деплою, з документацією та навчанням команди. Наш досвід — 10+ років в ETL-інтеграції, більше 50 успішних проєктів, сертифіковані Microsoft-інженери гарантують якість та продуктивність. Зв'яжіться з нами для консультації щодо вашого проєкту.
Чому варто обирати SSIS для ETL?
SSIS — це не просто інструмент для копіювання даних. Це середовище виконання пакетів з візуальним дизайнером, розвиненою системою трансформацій, обробкою помилок та логуванням. На практиці SSIS використовують для міграції даних між гетерогенними системами, нічної синхронізації з ERP/CRM, завантаження в сховища даних (DWH) та періодичних data quality процесів. У порівнянні з менш продуктивними рішеннями, SSIS показує швидкість обробки до 3 разів вище на великих обсягах даних (більше 10 млн рядків за сесію) завдяки оптимізації буферизації.
Архітектура SSIS: як це працює
Кожен SSIS пакет (.dtsx файл) складається з Control Flow та Data Flow. Control Flow — послідовність задач (Execute SQL Task, Send Mail Task, File System Task), умовні переходи, цикли. Data Flow — потік даних: Sources → Transformations → Destinations. Це різні «движки» всередині SSIS, і їх важливо не плутати. Зберігання пакетів: на файловій системі, в MSDB базі даних або в SSISDB (Integration Services Catalog) — рекомендований варіант починаючи з версії 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. Нові та змінені записи за останні 24 години. Control Flow структура пакета:
- Execute SQL: Truncate Staging
- Data Flow: Load Orders to Staging
- Execute SQL: Upsert from Staging to DWH
- Execute SQL: Update ETL Log
В Data Flow компоненти: OLE DB Source (Oracle) → Derived Column (add ETL_LOAD_DATE) → Data Conversion (varchar → nvarchar) → OLE DB Destination (SQL Server Staging). SSIS автоматично буферизує 10 тисяч рядків за замовчуванням, але для потоків більше 1 млн рядків варто збільшити DefaultBufferMaxRows до 50000 — це дає приріст продуктивності до 20%.
Як налаштувати обробку помилок в SSIS?
Найнедооціненіша частина SSIS — Error Output на кожному компоненті Data Flow. За замовчуванням помилка в одному рядку валить весь пакет. Правильне рішення: перенаправляти некоректні рядки в окрему таблицю помилок. Виконайте кроки:
- Правой кнопкою на компоненті → Show Advanced Editor → Error Output.
- Для потрібного стовпця змініть
ErrorнаRedirect Row. - З'єднайте червоний вихід з OLE DB Destination, що вказує на таблицю помилок.
- Створіть таблицю для логування:
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%.
Запуск через 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 надає докладний журнал кожного виконання. Ми налаштовуємо сповіщення при збоях — через email або Telegram, щоб ви завжди були в курсі. Наші інженери готові допомогти з побудовою дашбордів продуктивності на основі даних catalog.executions. Наприклад, можна відстежувати тривалість виконання та кількість оброблених рядків — це допомагає вчасно помітити деградацію ETL.
Що входить в роботу?
| Компонент | Опис |
|---|---|
| Аналіз джерел та цільової схеми | Визначення маппінгу, ключів, бізнес-логіки |
| Розробка пакетів SSIS | Control Flow, Data Flow, параметризація, обробка помилок |
| Тестування на реальних даних | Перевірка коректності, продуктивності, граничних випадків |
| Налаштування розкладу та моніторингу | SQL Server Agent, алерти, логи |
| Документація та передача | Опис пакетів, інструкція з експлуатації, навчання команди |
Строки та як почати
| Масштаб задачі | Орієнтовні строки |
|---|---|
| Одне джерело → staging → DWH, прості трансформації | 1–2 тижні |
| Кілька джерел, data quality checks, incremental load | 1–2 місяці |
| Повноцінний DWH (star schema, SCD Type 2, кілька потоків) | 2–3 місяці+ |
Вартість розраховується індивідуально після аналізу задачі. Замовте оцінку вашого проєкту — отримайте готове рішення під ключ з гарантією якості. Докладніше про SSIS читайте в офіційній документації Microsoft.







