Skip to content
Back to skills

Ssis

ASecurity

Expert skill for SQL Server Integration Services (SSIS) across all versions (2014-2025). Provides deep expertise in control flow and data flow design, SSISDB catalog management, package deployment, performance optimization, Azure-SSIS IR, and migration planning. WHEN: \"SSIS\", \"Integration Services\", \"DTSX\", \".dtsx\", \"SSISDB\", \"SSIS package\", \"Data Flow Task\", \"Control Flow\", \"Execute Package Task\", \"OLE DB\", \"SSIS catalog\", \"SQL Agent SSIS\", \"SSIS deployment\", \"Azur...

  • 4 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 24, 2026
devopsc#sqlnodeexpressazuretestingdebuggingdatabasedevopsci/cd

Works with

  • cli

Security analysis

A100/100

Pro scans all 11 files and shows the line behind each finding

Scanned September 24, 2026

npx -y skills add chrishuffman5/domain-expert --skill ssis --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ssis?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ssis
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/chrishuffman5-ssis/badge)](https://www.skillsdirectory.com/skills/chrishuffman5-ssis)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ssis
description: "Expert skill for SQL Server Integration Services (SSIS) across all versions (2014-2025). Provides deep expertise in control flow and data flow design, SSISDB catalog management, package deployment, performance optimization, Azure-SSIS IR, and migration planning. WHEN: \"SSIS\", \"Integration Services\", \"DTSX\", \".dtsx\", \"SSISDB\", \"SSIS package\", \"Data Flow Task\", \"Control Flow\", \"Execute Package Task\", \"OLE DB\", \"SSIS catalog\", \"SQL Agent SSIS\", \"SSIS deployment\", \"Azure-SSIS IR\", \"SSIS performance\", \"SSIS error\", \"Flexible File Task\", \"SSIS migration\", \"SSIS to ADF\", \"SSIS to Fabric\"."
license: MIT
---

# SSIS

This skill covers SQL Server Integration Services (SSIS) across all supported versions (2014 through 2025). It provides deep knowledge of:

- Control flow engine: task orchestration, precedence constraints, containers, event handlers, transactions, checkpoints
- Data flow engine: buffer-based pipeline, execution trees, synchronous vs asynchronous transformations, error outputs
- SSISDB catalog: project deployment, parameterization, environments, execution logging, catalog views
- Package design: master-child patterns, naming conventions, modular architecture
- Data flow optimization: buffer sizing, lookup caching, source query tuning, destination fast load
- Connection managers: OLE DB, ADO.NET, ODBC, Flat File, Excel, Flexible File (Azure Blob/ADLS)
- Deployment: project model (.ispac) vs legacy package model, CI/CD with SSIS DevOps Tools
- Azure-SSIS Integration Runtime: lift-and-shift, custom setup, VNet integration, cost management
- Security: protection levels, parameterized credentials, SSISDB encryption, proxy accounts
- Script extensibility: Script Task (control flow) and Script Component (data flow) in C#/VB.NET
- Expression language: property expressions, Derived Column, Conditional Split, variable evaluation
- Migration planning: SSIS to Azure Data Factory, Microsoft Fabric, Airflow, dbt

When a question is version-specific, read the appropriate version reference below. When the version is unknown, provide general guidance and note where behavior differs across versions.

## When to Use This Skill's General Guidance vs. a Version Reference

**Use the general guidance in this file when:**
- The question applies across SSIS versions (architecture, design patterns, optimization, deployment)
- The user's SSIS version is unknown
- The request involves migration planning or platform comparison
- The request is about SSISDB catalog management, CI/CD, or security best practices

**Read a version reference when:**
- The question involves version-specific features (e.g., Flexible File Task in 2019+, Entra ID in 2025)
- The question involves version-specific deprecations or breaking changes
- The user explicitly names a version ("SSIS 2025 package fails after upgrade")

## How to Approach Tasks

1. **Classify** the request:
   - **Troubleshooting** -- Load `references/diagnostics.md` for common errors, performance bottlenecks, SSISDB monitoring queries, Azure-SSIS IR issues
   - **Architecture / package design** -- Load `references/architecture.md` for engine internals, buffer management, execution trees, connection managers, expression language
   - **Best practices** -- Load `references/best-practices.md` for design patterns, optimization, error handling, CI/CD, security, migration patterns
   - **Performance tuning** -- Load both `references/architecture.md` (buffer mechanics) and `references/best-practices.md` (optimization techniques)
   - **Deployment / CI/CD** -- Load `references/best-practices.md` for deployment models, DevOps tooling, multi-environment promotion
   - **Migration** -- Load `references/best-practices.md` for migration patterns to ADF, Fabric, Airflow, dbt

2. **Identify version** -- Determine which SQL Server / SSIS version the user runs. Key version gates:
   - Flexible File Task / Parquet support: 2019+
   - AutoAdjustBufferSize: 2016+
   - SSIS Scale Out: 2017+
   - ADO.NET with Microsoft.Data.SqlClient / Entra ID: 2025+
   - 32-bit deprecation: 2025
   - Attunity CDC removal: 2025
   If version is unclear, ask.

3. **Load context** -- Read the relevant reference file for deep technical detail.

4. **Analyze** -- Apply SSIS-specific reasoning. Consider engine type (control flow vs data flow), transformation blocking behavior, buffer impact, deployment model, and connection manager selection.

5. **Recommend** -- Provide actionable guidance. Include SSISDB catalog queries for monitoring, property settings for tuning, and step-by-step instructions for deployment or configuration.

6. **Verify** -- Suggest validation steps (execute in SSDT with data viewers, check SSISDB execution reports, review catalog.event_messages, test in non-production environment first).

## Core Architecture

### Two-Engine Design

SSIS separates concerns across two distinct engines:

```
Package (.dtsx)
├── Control Flow Engine (Runtime Engine)
│   ├── Tasks (Execute SQL, Script, File System, etc.)
│   ├── Containers (Sequence, For Loop, Foreach Loop)
│   ├── Precedence Constraints (Success/Failure/Completion + expressions)
│   ├── Event Handlers (OnError, OnWarning, OnPreExecute, etc.)
│   └── Transactions and Checkpoints
│
└── Data Flow Engine (Pipeline Engine)
    ├── Sources (OLE DB, Flat File, Excel, Flexible File, etc.)
    ├── Transformations (Derived Column, Lookup, Sort, Merge Join, etc.)
    ├── Destinations (OLE DB, Flat File, Raw File, etc.)
    └── Buffer Manager (in-memory row buffers, execution trees)
```

**Control flow** manages what runs and in what order. **Data flow** manages how data moves and transforms within a Data Flow Task.

### Buffer Architecture (Data Flow)

The data flow engine uses in-memory buffers for high throughput:

- Data flows through **buffers** (configurable via `DefaultBufferMaxRows` and `DefaultBufferSize`)
- Buffers are organized into **execution trees** from source (or async output) to next async transformation or destination
- Each execution tree gets its own worker thread

**Transformation types by buffer behavior:**

| Type | Behavior | Examples | Impact |
|---|---|---|---|
| Synchronous | Reuses input buffer, row-by-row | Derived Column, Conditional Split, Data Conversion, Multicast | Best performance |
| Semi-blocking | Requires subset of rows, creates new buffers | Merge, Merge Join, Union All | Moderate -- new buffers |
| Fully blocking | Must read ALL input before ANY output | Sort, Aggregate | Worst -- entire dataset in memory |

### SSISDB Catalog

The SSISDB catalog (project deployment model, 2012+) provides centralized management:

```
SSISDB
├── Folders
│   ├── Projects (.ispac deployments)
│   │   ├── Packages
│   │   └── Parameters
│   ├── Environments
│   │   └── Environment Variables (Dev/QA/Prod values)
│   └── Environment References
```

**Key capabilities:** deployment versioning, parameterized execution, automatic logging, built-in SSMS reports, catalog views for custom monitoring.

### Deployment Models

| Model | Unit | Target | Configuration | Status |
|---|---|---|---|---|
| **Project** (recommended) | .ispac (all packages) | SSISDB catalog | Parameters + environments | Current |
| **Package** (legacy) | Individual .dtsx files | File system / MSDB | .dtsConfig XML files | Deprecated in 2025 |

## Package Design

### Master-Child Pattern

Use a master package to orchestrate child packages via Execute Package Task:
- Master handles sequencing, error notification, logging
- Each child is a self-contained unit (one per source system or target table)
- Pass values via project parameters or parent package variables
- Benefits: modularity, parallel development, independent testing, reusability

### Naming Conventions

| Element | Pattern | Example |
|---|---|---|
| Tasks | Type prefix + description | `SQL_LoadCustomers`, `DFT_TransformOrders`, `SCR_ValidateInput` |
| Data flow components | Type prefix + source/target | `SRC_ODS_Customers`, `LKP_DimProduct`, `DST_DW_FactSales` |
| Variables | `User::v` prefix | `User::vFilePath`, `User::vRowCount` |
| Connection managers | Environment + system | `DEV_ODS_OleDb`, `PROD_DW_OleDb` |

### Complexity Guidelines

- One data flow per logical operation -- avoid monolithic data flows
- Group related tasks in Sequence Containers for shared error handling or transactions
- If a package exceeds ~50 tasks, split into multiple child packages
- Annotate business rules directly in the package designer

## Data Flow Optimization

### Buffer Tuning

| Property | Default | Guidance |
|---|---|---|
| `DefaultBufferMaxRows` | 10,000 | Increase for narrow rows; monitor memory |
| `DefaultBufferSize` | 10 MB | Increase up to 100 MB for wide rows |
| `AutoAdjustBufferSize` | false | Set true (2016+) to auto-calculate from row count |
| `EngineThreads` | 10 | Increase for data flows with many execution trees |

### Key Optimization Rules

1. **Prefer synchronous transformations** -- Derived Column, Conditional Split, Data Conversion reuse buffers
2. **Eliminate Sort/Aggregate in data flow** -- Push to source query (ORDER BY, GROUP BY) wherever possible
3. **Lookup: use full cache mode** with indexed reference tables and only needed columns
4. **Fast Load for destinations** -- OLE DB Destination with BULK INSERT; tune `MaxInsertCommitSize`
5. **Filter at source** -- Use SQL queries with WHERE clauses, not table mode
6. **Remove columns early** -- Drop unnecessary columns before expensive transformations
7. **Network packet size** -- Increase from 4 KB to 32 KB on OLE DB connection manager for large transfers

## Azure-SSIS Integration Runtime

Azure-SSIS IR is a managed cluster of Azure VMs in Azure Data Factory for running SSIS packages:

- **Lift-and-shift**: Run existing packages without rewriting
- **SSISDB hosting**: Azure SQL Database or Azure SQL Managed Instance
- **Scaling**: Configure node size and count (1-10+)
- **Custom setup**: Install drivers, components, assemblies on IR nodes
- **VNet integration**: Access on-premises data via VPN/ExpressRoute
- **Cost management**: Start/stop IR on schedule to avoid idle costs
- **Cold start**: ~20-30 minutes to provision/start

### Limitations

- No SSIS Scale Out support in Azure-SSIS IR
- Custom setup adds to startup time
- 64-bit only (no 32-bit providers)
- Cost: multi-node IR running 24/7 is expensive vs serverless ADF activities

## Version-Specific Guidance

| Version | Reference | What's Version-Specific |
|---|---|---|
| SSIS 2019 | `references/versions/2019.md` | Flexible File Task, Parquet/ORC/Avro support, Azure connectors |
| SSIS 2022 | `references/versions/2022.md` | Maintenance release, minimal SSIS changes, VS 2022 tooling |
| SSIS 2025 | `references/versions/2025.md` | Entra ID, TLS 1.3, deprecations (32-bit, legacy service, Attunity CDC) |

## Anti-Patterns

1. **Monolithic mega-package** -- A single package that extracts, transforms, and loads everything. Breaks modularity, blocks parallel development, and makes debugging painful. Use master-child pattern.

2. **Sort/Aggregate in data flow on large datasets** -- Fully blocking transformations hold the entire dataset in memory. Push to source query (ORDER BY / GROUP BY) or stage and use T-SQL.

3. **No-cache Lookup on high-volume data flows** -- Issues a query per row. Use full cache mode with indexed reference tables. Reserve no-cache for tiny or volatile reference sets.

4. **Hard-coded connection strings** -- Embeds server names, credentials, file paths directly in packages. Use project parameters mapped to SSISDB environment variables.

5. **EncryptSensitiveWithUserKey in production** -- Only the creating user can decrypt. Use DontSaveSensitive with parameters and SSISDB environment variables (ServerStorage encryption).

6. **Ignoring error output configuration** -- Leaving all components on "Fail component" for errors. Configure error outputs to redirect failed rows for investigation while allowing the pipeline to continue.

7. **SELECT * in source queries** -- Pulls unnecessary columns into buffers, wasting memory and reducing rows per buffer. Specify only needed columns.

8. **Using package deployment model for new projects** -- Legacy model lacks parameterization, environment management, and automatic logging. The package deployment model is deprecated in SSIS 2025. Use project deployment model.

### SSIS Future and Deprecation Awareness

SSIS remains fully supported through SQL Server 2025's lifecycle, but Microsoft is signaling a transition:

- **SSIS 2025 was announced on the Microsoft Fabric Blog**, not the SQL Server blog
- Only one new feature in 2025 (ADO.NET with Microsoft.Data.SqlClient); the rest was deprecations and removals
- Microsoft positions Fabric as the next-generation unified analytics platform
- **Invoke SSIS Package activity** in Fabric (preview) provides a bridge for existing packages
- No EOL date announced; SQL Server 2022 extended support runs through January 2033

**Practical guidance:**
- Existing packages: no immediate action; begin planning migration on a package-by-package basis
- New projects: prefer ADF, Fabric, or open-source alternatives unless on-premises SQL Server is required
- Hybrid: use Azure-SSIS IR or Fabric's Invoke SSIS Package while building new workloads on modern platforms
- Prioritize migrating packages that use removed components (Attunity CDC, Oracle connector, Hadoop tasks)

## Cross-Domain References

| Technology | Reference | When |
|---|---|---|
| SQL Server | The database plugin's `sql-server` skill | SQL Server platform context, Always Encrypted, T-SQL optimization for source queries |
| ETL domain | `overview` skill | Cross-platform comparison, tool selection, ETL vs ELT decision framework |
| Azure Data Factory | `adf` skill | ADF pipeline design, Azure-SSIS IR configuration, migration target |
| Airflow | `airflow` skill | Airflow as migration target, DAG-based orchestration alternative |

## Reference Files

- `references/architecture.md` -- Buffer management, execution trees, connection managers, expression language, Script Task vs Script Component, error handling mechanics, deployment models, SSISDB structure, Azure integration
- `references/best-practices.md` -- Package design patterns, data flow optimization, error handling strategy, CI/CD deployment, security, performance tuning, testing, migration patterns to ADF/Fabric/Airflow/dbt
- `references/diagnostics.md` -- Common errors (type conversion, truncation, connection timeout, lookup failure, validation, 32/64-bit), performance bottlenecks, SSISDB monitoring queries, debugging techniques, Azure-SSIS IR troubleshooting

## Diagnostic Scripts

Ready-made T-SQL against the SSISDB catalog in `scripts/`, numbered by investigation order. All read-only; run in SSMS on the catalog instance.

- `scripts/01-recent-executions.sql` -- 7-day execution summary by package with status mix
- `scripts/02-failed-execution-errors.sql` -- Error messages from failed executions (first error = root cause)
- `scripts/03-package-duration-trend.sql` -- 30-day duration trend (batch-window drift detection)
- `scripts/04-longest-executables.sql` -- Slowest tasks/containers inside packages (the bottleneck locator)

Files in this skill

  • SKILL.md15.1 KB
  • references/architecture.md15.6 KB
  • references/best-practices.md15.5 KB
  • references/diagnostics.md14.8 KB
  • references/versions/2019.md3.2 KB
  • references/versions/2022.md3 KB
  • references/versions/2025.md6.1 KB
  • scripts/01-recent-executions.sql1.4 KB
  • scripts/02-failed-execution-errors.sql1.2 KB
  • scripts/03-package-duration-trend.sql1.3 KB
  • scripts/04-longest-executables.sql1.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…