Мы разрабатываем и настраиваем 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.







