airflow-ssis-provider¶
An operator and sensor for starting and tracking SQL Server Integration
Services (SSIS) package executions from an Airflow DAG, via the SSISDB
catalog’s own stored procedures over an MsSqlHook connection (built on
apache-airflow-providers-microsoft-mssql, adapted from
mike-hosseini/airflow-sql-server-plugin).
Connection setup¶
For a screenshot walkthrough of creating this connection in the Airflow UI, see SSIS connection.
Uses a standard Airflow mssql connection (MsSqlHook) pointed at the
SQL Server instance hosting the SSIS catalog.
Operators and sensors¶
SsisPackageOperatorBuilds and runs the
SSISDB.catalog.create_execution/set_execution_parameter_value/start_executionsequence for one package, then pushes the resultingexecution_idto XCom. Parameters:conn_id,database,folder,project,package,environment(optional SSIS environment reference),logging_level(LoggingLevelenum:none/basic/performance/verbose/runtime_lineage/custom, defaultbasic),parameters(optional list ofQueryParameters(name, value, type), wheretypeisParameterType.PROJECT/PACKAGE/LOGGING).SsisPackageSensorPolls
SSISDB.catalog.executionsfor the execution id pulled from XCom (xcom_task_id) until it reaches a terminal status (Success/Failure/Canceled/Completed/Pending/Stopping). RaisesPackageExecutionErroronFailure/Canceled.
Usage¶
from SSIS_Operator.operators.ssis_package_operator import SsisPackageOperator
from SSIS_Operator.sensors.ssis_package_sensor import SsisPackageSensor
from SSIS_Operator.models.SqlQueryParameters import QueryParameters, ParameterType
run_package = SsisPackageOperator(
task_id="run_ssis_package",
conn_id="mssql_default",
database="SSISDB",
folder="MyFolder",
project="MyProject",
package="MyPackage.dtsx",
parameters=[
QueryParameters(name="SourcePath", value="/data/in", type=ParameterType.PACKAGE),
],
)
wait_for_package = SsisPackageSensor(
task_id="wait_for_ssis_package",
conn_id="mssql_default",
database="SSISDB",
xcom_task_id="run_ssis_package",
)
run_package >> wait_for_package