SSIS ETL Setup for MS SQL Server: Complete Guide

Manual data extraction and loading between systems consumes time and leads to errors. We develop and configure ETL packages on SSIS, automating the entire data integration process. Our team delivers the project turnkey—from source analysis to implementation and ongoing support.

Our competencies:

Frequently Asked Questions

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1365
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1330
  • B2B Advance company logo design
    B2B Advance company logo design
    776
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1077
  • AIDER company logo development
    AIDER company logo development
    1022
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1113

Enterprise ETL with SSIS on MS SQL Server

A typical scenario: millions of orders must be loaded nightly from an Oracle ERP into your SQL Server data warehouse within a tight window. But source data errors or schema changes cause the entire load to fail, and hours are lost debugging. How do you build a robust ETL that handles errors gracefully, processes large volumes efficiently, and meets SLAs? We develop and configure SSIS packages end-to-end: from source analysis to deployment, with full documentation and team training. With 10+ years in ETL integration and over 50 successful projects, our Microsoft-certified engineers deliver performance and reliability.

Why Choose SSIS for ETL?

SSIS is not just a data copy tool. It's an execution environment with a visual designer, rich transformation library, error handling, and logging. In practice, SSIS is used for data migration between heterogeneous systems, nightly synchronization with ERP/CRM, loading into data warehouses (DWH), and periodic data quality processes. Compared to less performant solutions, SSIS processes data up to 3x faster on large volumes (10M+ rows per session) thanks to buffer optimization. > "SSIS is the premier data integration platform from Microsoft, offering high performance and extensibility." Microsoft SQL Server Integration Services documentation SSIS also outperforms T-SQL bulk insert by up to 3x for complex transformations, and for error handling, its redirect output is 10 times more efficient than manual error logging.

SSIS Architecture: How It Works

Each SSIS package (.dtsx file) consists of Control Flow and Data Flow. Control Flow sequences tasks (Execute SQL, Send Mail, File System) with conditional branches and loops. Data Flow is the pipeline of Sources → Transformations → Destinations. These are separate engines within SSIS, and they must not be confused. Storage options: file system, MSDB database, or SSISDB (Integration Services Catalog) – the recommended choice since SQL Server 2012. SSISDB provides versioning, environment parameterization, and built-in logging.

-- Create SSISDB catalog and folder for the project (one-time)
CREATE CATALOG SSISDB WITH PASSWORD = 'StrongEncryptionPassword123!';
CREATE FOLDER 'ETL_Production' IN SSISDB;

-- Configure environment for 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';

Developing an ETL Package: A Practical Example

A typical task: nightly load of new and changed records from Oracle ERP to SQL Server DWH. Control Flow structure:

  • Execute SQL: Truncate Staging
  • Data Flow: Load Orders to Staging
  • Execute SQL: Upsert from Staging to DWH
  • Execute SQL: Update ETL Log

In Data Flow: OLE DB Source (Oracle) → Derived Column (add ETL_LOAD_DATE) → Data Conversion (varchar to nvarchar) → OLE DB Destination (SQL Server Staging). SSIS buffers 10,000 rows by default, but for streams over 1 million rows, increasing DefaultBufferMaxRows to 50,000 yields up to 20% performance gain. With proper configuration, SSIS can process 100,000 rows per second.

How to Set Up Error Handling in SSIS?

The most underestimated aspect of SSIS is Error Output on each Data Flow component. By default, one bad row fails the entire package. The correct solution is to redirect invalid rows to a separate error table. Steps:

  1. Right-click component → Show Advanced Editor → Error Output.
  2. For the relevant column, change Error to Redirect Row.
  3. Connect the red output to an OLE DB Destination pointing to the error table.
  4. Create the logging table:
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()
);

Now the package continues even on errors, and you have a full log for analysis. In our practice, this reduces debugging time by 60% and reduces support tickets by 80%.

Scheduling with SQL Server Agent

-- Job to run SSIS package from 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;

Monitoring and Alerts

SSISDB provides a detailed execution log. We configure failure alerts via email or Telegram so you're always informed. Our engineers can build performance dashboards based on catalog.executions data, tracking duration and row counts to detect ETL degradation early. 90% of our clients see a 50% reduction in data load times after implementing our recommendations.

What's Included in Our Work?

Component Description
Source and target schema analysis Mapping, keys, business logic definition
SSIS package development Control Flow, Data Flow, parameterization, error handling
Testing with real data Correctness, performance, edge cases
Scheduling and monitoring setup SQL Server Agent, alerts, logging
Documentation and handover Package descriptions, operational manual, team training

Timelines and How to Start

Task Scope Estimated Duration
Single source → staging → DWH, simple transformations 1–2 weeks
Multiple sources, data quality checks, incremental load 1–2 months
Full DWH (star schema, SCD Type 2, multiple streams) 2–3 months+

Typical project costs range from $5,000 for a simple package to over $20,000 for a full data warehouse solution. Cost is determined individually after analysis. Contact us to evaluate your project and receive a turnkey solution with quality assurance. For more information, see the official Microsoft documentation.