Integration Services Developer Documentation
Applies to: SQL Server (all supported versions) SSIS Integration Runtime in Azure Data Factory
Integration Services includes a completely rewritten object model, which has been enhanced with many features that make extending and programming packages easier, more flexible, and more powerful. Developers can extend and program almost every aspect of Integration Services packages.
As an Integration Services developer, there are two fundamental approaches that you can take to Integration Services programming:
You can extend packages by writing components that become available within SSIS Designer to provide custom functionality in a package.
You can create, configure, and run packages programmatically from your own applications.
If you find that the built-in components in Integration Services do not meet your requirements, you can extend the power of Integration Services by coding your own extensions. In this approach, you have two discrete options:
For ad hoc use in a single package, you can create a custom task by writing code in the Script task, or a custom data flow component by writing code in the Script component, which you can configure as a source, transformation, or destination. These powerful wrappers write the infrastructure code for you and let you focus exclusively on developing your custom functionality; however, they are not easily reusable elsewhere.
For use in multiple packages, you can create custom Integration Services extensions such as connection managers, tasks, enumerators, log providers, and data flow components. The managed Integration Services object model contains base classes that provide a starting point and make developing custom extensions easier than ever.
If you want to create packages dynamically, or to manage and run Integration Services packages outside the development environment, you can manipulate packages programmatically. You can load, modify, and run existing packages, or you can create and run entirely new packages programmatically. In this approach, you have a continuous range of options:
Load and run an existing package without modification.
Load an existing package, reconfigure it (for example, specify a different data source), and run it.
Create a new package, add and configure components, making changes object by object and property by property, save it, and then run it.
These approaches to Integration Services programming are described in this section and demonstrated with examples.
In This Section
Integration Services Programming Overview
Describes the roles of control flow and data flow in Integration Services development.
Understanding Synchronous and Asynchronous Transformations
Describes the important distinction between synchronous and asynchronous outputs and the components that use them in the data flow.
Working with Connection Managers Programmatically
Lists the connection managers that you can use from managed code, and the values that the connection managers return when the code calls the AcquireConnection method.
Extending Packages with Scripting
Describes how to extend the control flow by using the Script task, or the data flow by using the Script component.
Extending Packages with Custom Objects
Describes how to create and program custom tasks, data flow components, and other package objects for use in multiple packages.
Building Packages Programmatically
Describes how to create, configure, and save Integration Services packages programmatically.
Running and Managing Packages Programmatically
Describes how to enumerate, run, and manage Integration Services packages programmatically.
Integration Services Error and Message Reference
Lists the predefined Integration Services error codes, together with their symbolic names and descriptions.
Troubleshooting Tools for Package Development
Describes the features and tools that Integration Services provides for troubleshooting packages during development.