{"id":3395,"date":"2018-05-04T13:59:45","date_gmt":"2018-05-04T13:59:45","guid":{"rendered":"https:\/\/zappysys.com\/blog\/?p=3395"},"modified":"2025-09-24T15:00:56","modified_gmt":"2025-09-24T15:00:56","slug":"run-ssis-azure-data-factory-deploy-monitor-ssis-cloud","status":"publish","type":"post","link":"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/","title":{"rendered":"How to run SSIS in Azure Data Factory (Deploy, Monitor SSIS in Cloud)"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-adf-logo.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3409 alignleft\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-adf-logo.png\" alt=\"Azure Data Factory Logo - SSIS Integration Runtime\" width=\"129\" height=\"125\" \/><\/a>If you are using <strong>SSIS for your ETL needs<\/strong> and looking to reduce your overall cost then, there is a good news. Microsoft recently announced support to\u00a0<strong>run SSIS in Azure Data Factory (SSIS as Cloud Service).<\/strong>\u00a0Yes &#8211; that&#8217;s exciting,\u00a0 you can now run SSIS in Azure without any change in your packages (<strong>Lift and Shift<\/strong>).\u00a0 SSIS Support in Azure is a new feature of <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/data-factory\/\" rel=\"noopener\">Azure Data Factory V2 (i.e. ADF)<\/a>. This article also explains how to deploy SSIS Packages to Azure which use <strong>3rd party components<\/strong> (e.g. <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/\" rel=\"noopener\">SSIS PowerPack<\/a>\u00a0<strong>v2.6.13 or Higher<\/strong>). There are few additional steps involved if you wish to install <strong>Custom SSIS Components<\/strong> in Azure Data Factory (explained later in this article).<\/p>\n<p>&nbsp;<\/p>\n<h2>What is Microsoft Azure Data Factory (i.e. ADF)<\/h2>\n<p>Azure Data Factory (i.e. also referred as <em>&#8220;ADF&#8221;<\/em>) is a fully managed cloud service by Microsoft for your ETL needs. ADF comes with two completely\u00a0different ETL approaches (referred as Integration Runtimes).<\/p>\n<ul>\n<li>Default Runtime (Copy Activity)<\/li>\n<li>SSIS Runtime<\/li>\n<\/ul>\n<p>Both runtimes offer their\u00a0own Authoring\u00a0tools and they have completely\u00a0different authoring, execution, and <a href=\"https:\/\/azure.microsoft.com\/en-us\/pricing\/details\/data-factory\/\" target=\"_blank\" rel=\"noopener\">pricing models<\/a>. Check later in this article for some tips to save Cost by automating Start \/ Stop of SSIS IR based on your limited execution need (Only Start SSIS-IR when you need to run package).<\/p>\n<p><strong>Choose ADF SSIS Runtime when:<\/strong><\/p>\n<ul>\n<li>You are planning to leverage existing ETL (i.e. SSIS Packages) in Azure without significant changes<\/li>\n<li>You like to use\u00a0\u00a0<strong>3rd party SSIS components in ADF<\/strong>\u00a0(e.g. <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/\" rel=\"noopener\">SSIS PowerPack<\/a>) which are not found in Copy Activity<\/li>\n<li>You want more predictable pricing model (Fixed Monthly cost regardless number of executions )<\/li>\n<li>You find certain key features or performance of SSIS better than ADF Copy Activity<\/li>\n<li>You don&#8217;t want to invest in learning new technologies for now but want to shift your workloads in the cloud to reduce cost.<\/li>\n<li>You like SSIS Package designer (i.e. <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/ssdt\/download-sql-server-data-tools-ssdt?view=sql-server-2017\" rel=\"noopener\">SSDT<\/a>) better than ADF (Maybe due to ease of Use in Disconnected mode on the client side or Visual Debugger)<\/li>\n<\/ul>\n<p><strong>Choose ADF Default Runtime (Copy Activity) when:\u00a0<\/strong><\/p>\n<ul>\n<li>Your data movement which is more Azure-cloud focused. For example, Move data from CosmosDB to Azure SQL Data Warehouse. Or Move Data from Azure Data Bricks to Blob Storage.<\/li>\n<li>You like certain features\/connectivity\u00a0options in Copy-Activity are better than SSIS<\/li>\n<li>You like to pay per execution rather than Fixed SSIS Runtime cost.<\/li>\n<li>You don&#8217;t\u00a0have expertise in SSIS and you like to start using ETL (Pay as you go)<\/li>\n<\/ul>\n<h2>Advantages of running SSIS on Azure Data Factory<\/h2>\n<p>There few obvious advantages if you decide to run SSIS Package in Azure Data Factory (ADF) compared to running on your own dedicated server (on-premises or VM running in Cloud).<\/p>\n<ul>\n<li><strong>Reduced Cost<\/strong> &#8211; This can be one big advantage why you may choose to run SSIS in Azure. Traditionally to run SSIS Packages in-house you needed SQL Server License (which can be very expensive). Microsoft does not sell SSIS License independently. But now with ADF you can get going with your ETL need without SQL Server license and fraction of the cost.<\/li>\n<li><strong>Managed Service<\/strong> &#8211; ADF is managed service means you don&#8217;t have to worry about hardware, OS, Licensing or ongoing maintenance\/patches. Azure infrastructure will take all these for you.<\/li>\n<li><strong>DevOps<\/strong> &#8211; Time to setup new server is significantly less with Azure Cloud approach.\u00a0 You can set up your SSIS ETL infrastructure in less than 30 mins with Azure.<\/li>\n<li><strong>Isolation of Compute and Database Storage<\/strong> &#8211; In Azure Data Factory when you provision SSIS runtime your Compute Node (Where SSIS service runs) is totally isolated than your SSISDB (DB where SSIS Packages \/ Settings \/ Execution Log stored). Which means if your compute node is offline for some reason you can still deploy packages and view execution log.<\/li>\n<\/ul>\n<p>Anyway&#8217;s enough said now let&#8217;s see how to provision and deploy SSIS packages in Azure Data Factory (ADF).<\/p>\n<h2>How to deploy and run SSIS Packages in Azure with 3rd party components<\/h2>\n<p>Before we deep dive to learn how to run packages in Azure Data Factory. Here are high-level steps to deploy SSIS Packages in Azure Data Factory. Here is <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/data-factory\/tutorial-deploy-ssis-packages-azure\" rel=\"noopener\">another tutorial link<\/a> from Microsoft (It doesn&#8217;t mention deploying third-party SSIS components but good to check anyway). Some steps are optional and only needed if you planning to run SSIS Packages with third-party components such as\u00a0<a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/\" rel=\"noopener\">SSIS PowerPack<\/a><\/p>\n<ol>\n<li>Create <strong>Azure Data Factory<\/strong>\u00a0instance- Check <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/data-factory\/quickstart-create-data-factory-portal\" rel=\"noopener\">this article<\/a><\/li>\n<li>Create <strong>Azure SQL DB Instance<\/strong> (Used to store SSISDB)\u00a0 &#8211; Check <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/sql-database\/sql-database-get-started-portal\" rel=\"noopener\">this article<\/a><\/li>\n<li><span style=\"text-decoration: underline;\">(3rd party SSIS)<\/span> Create <strong>Azure Blob Storage Container<\/strong> and Upload 3rd party SSIS component setup files<\/li>\n<li><span style=\"text-decoration: underline;\">(3rd party SSIS)<\/span> Create <strong>SAS URL for Azure Blob Container<\/strong> which has necessary 3rd party component setup files (SAS URL must have Read\/Write\/List\/Create permission)<\/li>\n<li>Create a new <strong>SSIS Runtime<\/strong> in Azure Data Factory<\/li>\n<li><span style=\"text-decoration: underline;\">(3rd party SSIS)<\/span> During setup enter SAS URL which points to a container with custom setup files.<\/li>\n<li>Use <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/ssdt\/download-sql-server-data-tools-ssdt?view=sql-server-2017\" rel=\"noopener\">SSDT BI<\/a> for VS 2015 or Higher to Author\/Test SSIS Packages locally (Change Project <a href=\"https:\/\/zappysys.zendesk.com\/hc\/en-us\/articles\/360001710233-How-to-change-TargetServerVersion-of-my-SSIS-Project\" target=\"_blank\" rel=\"noopener\">TargetServerVersion<\/a>\u00a0to\u00a0<strong>SQL 2017 Format<\/strong>)<\/li>\n<li>Use the latest version of <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/ssms\/download-sql-server-management-studio-ssms?view=sql-server-2017\" rel=\"noopener\">SSMS (v17.x or Higher)<\/a> to deploy SSIS Packages to Azure SQL DB (SSISDB)<\/li>\n<li>Execute Package via SSMS and Monitor Package Executions<\/li>\n<\/ol>\n<p>In the following sections, we will see each step in detail.<\/p>\n<h2>Important things to know about SSIS Runtime in ADF<\/h2>\n<p>There are a few important facts you should know about how Azure Data Factory (ADF) Hosts, Runs your SSIS Packages<\/p>\n<ul>\n<li>ADF uses Windows Server VM nodes to run your SSIS Packages in Azure.<\/li>\n<li>It uses SSIS 2017 Format so make sure any Packages using 3rd party components must be targeted to the correct SSIS version<\/li>\n<li>Each time you start and stop SSIS Runtime in ADF you will get a fresh VM node so nothing is persistent in ADF SSIS Node (Microsoft Azure will allocate any random node from VM Pool)<\/li>\n<li>If you wish to persist files\/values then do not save on ADF VM (Use external storage such as Blob Storage or SQL DB)<\/li>\n<\/ul>\n<h2>Choosing Between Azure Virtual Machine (Azure VM) and Azure Data Factory (ADF) for Running SSIS Packages<\/h2>\n<p>Many customers ask whether they should run their SSIS packages on an <strong>Azure Virtual Machine (VM)<\/strong> or inside <strong>Azure Data Factory (ADF)<\/strong> using the <strong>Azure-SSIS Integration Runtime (IR)<\/strong>. Both deployment options are supported by <strong>ZappySys<\/strong>, but the best choice depends on your workload characteristics, cost model, and operational requirements.<\/p>\n<p>Running SSIS packages in <strong>ADF with Azure-SSIS IR<\/strong> is fundamentally different from running them on an <strong>Azure VM<\/strong>. ADF provides a fully managed environment with automatic scaling, built-in scheduling, and native integration with other Azure services, while VMs offer more control over the operating system and custom configurations.<\/p>\n<p>For a deeper comparison of these two approaches, refer to our detailed guide here:<br \/>\n<a rel=\"noopener\" target=\"_new\" href=\"https:\/\/community.zappysys.com\/t\/choosing-between-azure-virtual-machine-azure-vm-and-azure-data-factory-adf-for-running-ssis-packages\/632\">Choosing Between Azure Virtual Machine (Azure VM) and Azure Data Factory (ADF) for Running SSIS Packages<\/a><\/p>\n<h2>Getting Started &#8211; Setup SSIS Runtime in Azure<\/h2>\n<p>Now let&#8217;s look at how to create your first Azure Data Factory Instance and then configure to run SSIS Packages with Custom Components such as <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/\" rel=\"noopener\">SSIS PowerPack<\/a>.<\/p>\n<h3>Prerequisite<\/h3>\n<p>Before we move forward with our steps to Deploy and Run SSIS Package in Azure Data Factory let&#8217;s confirm that you meet\u00a0the following prerequisite.<\/p>\n<ul>\n<li>You have a <strong>valid Azure Subscription<\/strong>. If you don&#8217;t have it then you can <a href=\"https:\/\/azure.microsoft.com\/free\/\" rel=\"noopener\">try for FREE here<\/a>.<\/li>\n<li>Download and Install <a href=\"https:\/\/azure.microsoft.com\/en-us\/features\/storage-explorer\/\" rel=\"noopener\">Azure Storage Explorer<\/a> for FREE (Used to upload setup files and create SAS Url for 3rd party SSIS components setup)<\/li>\n<li>Download and Install <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/ssms\/download-sql-server-management-studio-ssms?view=sql-server-2017\" rel=\"noopener\">SSMS v17.x or Higher<\/a> for FREE. This is not same SSMS which comes with SQL Server Setup (This new version is independent download and support connecting to Azure SQL DB for <strong>SSISDB<\/strong><\/li>\n<li>Download and Install <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/ssdt\/download-sql-server-data-tools-ssdt?view=sql-server-2017\" rel=\"noopener\">SSDT BI for VS 2015 or higher<\/a> (Used to design and test SSIS Packages with SQL Server 2017 support).<\/li>\n<li>You have downloaded setup files for\u00a0<a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/\" rel=\"noopener\">SSIS PowerPack<\/a>\u00a0(To obtain setup file &#8211; For FREE Trial <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/download\/\" rel=\"noopener\">Click Here<\/a>,\u00a0 For Paid Customer <a href=\"https:\/\/zappysys.com\/customer-downloads\/\" rel=\"noopener\">Click Here<\/a>)<\/li>\n<\/ul>\n<h3>Create a new Azure Data Factory (ADF)<\/h3>\n<p>Using your valid Azure Subscription create new Azure Data Factory Instance (Thi will host your SSIS Runtime). <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/data-factory\/quickstart-create-data-factory-portal\" rel=\"noopener\">Click here to learn more how to create a new Azure Data Factory Instance<\/a>.<\/p>\n<h3>Create a new Azure SQL Database (i.e. new SQL Instance)<\/h3>\n<p>Once you have a valid ADF Instance, next step is to make sure you have a valid Azure SQL Server Instance to host SSISDB (Catalog Database for SSIS). If possible choose the same region for both ADF and SQL Instance.\u00a0). <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/sql-database\/sql-database-get-started-portal\" rel=\"noopener\">Click here to learn more on how to create a new Azure SQL Server Instance<\/a>.<\/p>\n<h3>Create and Setup Azure Blob Storage Container (Only for 3rd party SSIS setup)<\/h3>\n<div class=\"su-note\"  style=\"border-color:#e5dd9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#FFF7B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><strong>NOTE:<\/strong> You can skip this section if you are not planning to use <strong>3rd party<\/strong>\u00a0(i.e. <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/\" rel=\"noopener\">SSIS PowerPack<\/a>) components in SSIS Packages<\/div><\/div>\n<p>Once you have provisioned ADF instance and Azure SQL Server instance, Now it&#8217;s time to prepare setup files for custom SSIS components. Behind the scene, ADF uses VM instances to run your SSIS Packages so you can install pretty much anything you want just like a regular VM. However, there is no Remote Desktop Option for SSIS node in ADF, in other words, it&#8217;s pretty locked down. The only way you can install custom components is through Custom Setup Option provided during your SSIS Runtime creation. This custom script is executed only once after SSIS VM is created in ADF. It also executed once you stop and start SSIS Runtime. You have no way to execute the custom script on demand while SSIS Runtime is running (Maybe Microsoft can change this in the future but no option for now).<\/p>\n<h3>Prepare custom setup files for ADF &#8211; SSIS Runtime<\/h3>\n<div class=\"su-note\"  style=\"border-color:#e5dd9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#FFF7B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><strong>NOTE:<\/strong> You can skip this section if you are not planning to use <strong>3rd party<\/strong>\u00a0(i.e. <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/\" rel=\"noopener\">SSIS PowerPack<\/a>) components in SSIS Packages<\/div><\/div>\n<p>During SSIS Runtime setup you can instruct ADF to perform a custom setup (e.g. Run the custom installer, copy files, execute PowerShell scripts etc). Your custom setup files are downloaded in the SSIS node (i.e. VM) at some point during SSIS Runtime setup. This is done using <strong>SAS URL<\/strong> (i.e. URL with Shared Access Signature). Treat SAS URL like a Password if you have some sensitive data in your container. For an additional read on the custom component setup, you can <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/data-factory\/how-to-configure-azure-ssis-ir-custom-setup\" rel=\"noopener\">refer this link<\/a>.<\/p>\n<p>Before we create SAS URL, you need to gather setup files on your local disk and then you can upload to Azure Blob Container. <strong>SSIS PowerPack needs the following 2 files to be uploaded in your blob container (root level)<\/strong>.<\/p>\n<ol>\n<li><strong>main.cmd<\/strong> [See below Section] &#8211; This is the <strong>entry point of Custom Setup in ADF-SSIS<\/strong><\/li>\n<li><strong>SSISPowerPackSetup_64bit_Trial.msi<\/strong>\u00a0(Trial version, <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/download\/\" rel=\"noopener\">download it<\/a>) <em>OR<\/em>\u00a0<strong>SSISPowerPackSetup_64bit.msi<\/strong>\u00a0(Paid Customer version,\u00a0<a href=\"https:\/\/zappysys.com\/customer-downloads\/\" rel=\"noopener\">download it<\/a>)<\/li>\n<\/ol>\n<div class=\"su-note\"  style=\"border-color:#e5de9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#fff8b7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><strong>NOTE:<\/strong> Make sure you upload files to an <em>Azure Blob Storage<\/em> container instead of <em>Azure Data Lake Storage <\/em>folder. Azure Data Lake Storage won&#8217;t allow creating an SAS URL for a container in which ADF could have full rights.<\/div><\/div>\n<p>Each file listed above has download link next to it so download locally (except <strong>main.cmd<\/strong> which we will discuss next).<\/p>\n<p>Create a\u00a0new file and name it as &#8220;<strong>main.cmd<\/strong>&#8220;. Enter content like below.<\/p>\n<div class=\"su-note\"  style=\"border-color:#e5de9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#FFF8B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><strong>NOTE:<\/strong> Make sure &#8220;<em>main.cmd<\/em>&#8221; is entered in lowercase, otherwise, ADF instance might not start.<\/div><\/div>\n<p>Few things you should change as per your need<\/p>\n<ol>\n<li>Change the Example License Key to your own License Key in Activate PowerPack license Step.<\/li>\n<li>Change <strong>SSISPowerPackSetup_64bit.msi\u00a0<\/strong>if your downloaded file has a different name<\/li>\n<li>Comment Activate PowerPack license Step if you are using Trial (To comment just add <span class=\"lang:default decode:true crayon-inline\">::<\/span>\u00a0 in front of the line)<\/li>\n<\/ol>\n<p>Other than the above three changes you can leave everything default. Save the file and upload to your setup blob container. Once ADF executes main.cmd it will generate new Log folder in your Blob container (You will see a new folder. Example\u00a0 <span class=\"lang:default decode:true crayon-inline\">main.cmd.log\\tvm-325613345_1-20180503t144850z##2018-05-03T145334Z<\/span>\u00a0 ).<\/p>\n<h4>main.cmd &#8211; For Trial Users<\/h4>\n<p>See below example script file which you have to create if you are a trial user (you don&#8217;t have a license key). The file must be named as main.cmd.<\/p>\n<pre class=\"lang:batch decode:true\" title=\"main.cmd\">set DIR=%CUSTOM_SETUP_SCRIPT_LOG_DIR%\r\n\r\necho Calling Step 1 : %TIME% &gt;&gt; \"%DIR%\\steps_log.txt\"\r\ndir \/s \/b &gt; \"%DIR%\\file_list.txt\"\r\n\r\necho Calling Step 2 : %TIME% &gt;&gt; \"%DIR%\\steps_log.txt\"\r\n\r\n::Install SSIS PowerPack\r\nmsiexec \/i  \"SSISPowerPackSetup_64bit_Trial.msi\" ADDLOCAL=ALL \/q  \/L*V \"%DIR%\\powerpack_trial_install_log.txt\"\r\n\r\necho Calling Step 3 : %TIME% &gt;&gt; \"%DIR%\\steps_log.txt\"\r\n\r\n::Activate SSIS PowerPack Trial Extension Key (Optional) -- Uncomment below line to apply the trial extension key.\r\n::\"C:\\Program Files (x86)\\ZappySys\\SSIS PowerPack (64 bit)\\LicenseManager.exe\" -p SSISPowerPack --register \"lgGAAO0-----REPLACE-WITH-YOUR-TRIAL-EXTENSION-KEY-----czM=\" --logfile \"%DIR%\\powerpack_register_log.txt\"\r\n\r\ndir \"C:\\Program Files\\Microsoft SQL Server\\*Zappy*.*\"  \/s \/b &gt;&gt; \"%DIR%\\installed_files.txt\"\r\ndir \"C:\\Program Files (x86)\\Microsoft SQL Server\\*Zappy*.*\"  \/s \/b &gt;&gt; \"%DIR%\\installed_files.txt\"\r\n\r\necho DONE : %TIME% &gt;&gt; \"%DIR%\\steps_log.txt\"\r\n\r\necho complete<\/pre>\n<h4>main.cmd &#8211; For Paid Customers<\/h4>\n<p>See below example script file which you have to create if you are a paid customer and wish to apply license key. The file must be named as main.cmd. Make sure:<\/p>\n<ol>\n<li>You uploaded the installer with the name\u00a0<strong>SSISPowerPackSetup_64bit.msi<\/strong>.<\/li>\n<li>Replaced the parameter&#8217;s\u00a0<strong>&#8211;register<\/strong> argument with your real license key.<\/li>\n<\/ol>\n<pre class=\"lang:batch decode:true\" title=\"main.cmd\">set DIR=%CUSTOM_SETUP_SCRIPT_LOG_DIR%\r\n\r\necho Calling Step 1 : %TIME% &gt;&gt; \"%DIR%\\steps_log.txt\"\r\ndir \/s \/b &gt; \"%DIR%\\file_list.txt\"\r\n\r\necho Calling Step 2 : %TIME% &gt;&gt; \"%DIR%\\steps_log.txt\"\r\n\r\n::Install SSIS PowerPack\r\nmsiexec \/i  \"SSISPowerPackSetup_64bit.msi\" ADDLOCAL=ALL \/q  \/L*V \"%DIR%\\powerpack_install_log.txt\"\r\n\r\necho Calling Step 3 : %TIME% &gt;&gt; \"%DIR%\\steps_log.txt\"\r\n\r\n::Activate PowerPack license (Optional)\r\n\"C:\\Program Files (x86)\\ZappySys\\SSIS PowerPack (64 bit)\\LicenseManager.exe\" -p SSISPowerPack --register \"lgGAAO0-----REPLACE-WITH-YOUR-LICENSE-KEY-----czM=\" --logfile \"%DIR%\\powerpack_register_log.txt\"\r\n\r\n::De-Activate license (Optional) -- Uncomment below line to Unregister previously used license. Must register first and then unregister\r\n::\"C:\\Program Files (x86)\\ZappySys\\SSIS PowerPack (64 bit)\\LicenseManager.exe\" -p SSISPowerPack --unregister --logfile \"%DIR%\\powerpack_un_register_log.txt\"\r\n\r\n\r\n::Show System Info\r\necho Calling Step 4 : %TIME% &gt;&gt; \"%DIR%\\steps_log.txt\"\r\n\"C:\\Program Files (x86)\\ZappySys\\SSIS PowerPack (64 bit)\\LicenseManager.exe\" -i -l \"%DIR%\\sysinfo_log.txt\"\r\n\r\necho Calling Step 5 : %TIME% &gt;&gt; \"%DIR%\\steps_log.txt\"\r\ndir \"C:\\Program Files\\Microsoft SQL Server\\*Zappy*.*\"  \/s \/b &gt;&gt; \"%DIR%\\installed_files.txt\"\r\ndir \"C:\\Program Files (x86)\\Microsoft SQL Server\\*Zappy*.*\"  \/s \/b &gt;&gt; \"%DIR%\\installed_files.txt\"\r\n\r\necho DONE : %TIME% &gt;&gt; \"%DIR%\\steps_log.txt\"\r\n\r\necho complete<\/pre>\n<h3>Create SAS URL of Azure Blob Container (Only for 3rd party SSIS setup)<\/h3>\n<p>Once you have prepared setup files now let&#8217;s upload them to your blob container and generate SAS URL using the\u00a0below steps.<\/p>\n<ol>\n<li>Install and Launch\u00a0<a href=\"https:\/\/azure.microsoft.com\/en-us\/features\/storage-explorer\/\" rel=\"noopener\">Azure Storage Explorer<\/a><\/li>\n<li>Right-click on the Storage Accounts node &gt; Click <strong><strong><strong>Connect to Azure storage &#8230;<\/strong><\/strong><\/strong>\n<div id=\"attachment_3401\" style=\"width: 354px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-storage-explorer-add-account.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3401\" class=\"size-full wp-image-3401\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-storage-explorer-add-account.png\" alt=\"Connect to Azure Storage Account in Azure Storage Explorer\" width=\"344\" height=\"250\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-storage-explorer-add-account.png 344w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-storage-explorer-add-account-300x218.png 300w\" sizes=\"(max-width: 344px) 100vw, 344px\" \/><\/a><p id=\"caption-attachment-3401\" class=\"wp-caption-text\">Connect to Azure Storage Account in Azure Storage Explorer<\/p><\/div>\n<p><strong>\u00a0<\/strong><\/li>\n<li>Once your account added &gt; Expand to Blob Containers node &gt; Right click &gt; <strong>Create Blob Container&#8230;<\/strong>\n<div id=\"attachment_3402\" style=\"width: 329px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-storage-explorer-create-new-blob-container.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3402\" class=\"size-full wp-image-3402\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-storage-explorer-create-new-blob-container.png\" alt=\"Create new Azure Blob Container in Azure Storage Explorer\" width=\"319\" height=\"393\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-storage-explorer-create-new-blob-container.png 319w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-storage-explorer-create-new-blob-container-244x300.png 244w\" sizes=\"(max-width: 319px) 100vw, 319px\" \/><\/a><p id=\"caption-attachment-3402\" class=\"wp-caption-text\">Create new Azure Blob Container in Azure Storage Explorer<\/p><\/div><\/li>\n<li>Select newly created container and <strong>upload files<\/strong> we prepared in the previous section.\n<div id=\"attachment_3403\" style=\"width: 824px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-upload-ssis-custom-setup-files-adf.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3403\" class=\"size-full wp-image-3403\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-upload-ssis-custom-setup-files-adf.png\" alt=\"Upload Custom Setup File for Azure Data Factory - SSIS Runtime\" width=\"814\" height=\"585\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-upload-ssis-custom-setup-files-adf.png 814w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-upload-ssis-custom-setup-files-adf-300x216.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-upload-ssis-custom-setup-files-adf-768x552.png 768w\" sizes=\"(max-width: 814px) 100vw, 814px\" \/><\/a><p id=\"caption-attachment-3403\" class=\"wp-caption-text\">Upload Custom Setup File for Azure Data Factory &#8211; SSIS Runtime<\/p><\/div><\/li>\n<li><strong>Right-click on the container<\/strong> node and click <strong>Get Shared Access Signature<\/strong><br \/>\n<div class=\"su-note\"  style=\"border-color:#e5dd9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#FFF7B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">Make sure you adjust the expiration date to a long enough; otherwise, you may need to generate a new SAS URL often and restart your ADF SSIS Node to apply the new SAS URL. Also, select <strong>Write permission<\/strong> along with <strong>Read,\u00a0 List, and Create<\/strong>. If you do not select Write, then ADF setup cannot write log files back to your Blob Container. We also recommend Delete permission\u00a0in case Microsoft adds a new feature to delete older log files.<\/div><\/div>.<strong>Generate SAS URL from Azure Storage Explorer (Desktop Version)<\/strong><\/p>\n<div id=\"attachment_11108\" style=\"width: 788px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-custom-setup-generate-sas-url-via-storage-explorer.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11108\" class=\"size-full wp-image-11108\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-custom-setup-generate-sas-url-via-storage-explorer.png\" alt=\"\" width=\"778\" height=\"631\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-custom-setup-generate-sas-url-via-storage-explorer.png 778w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-custom-setup-generate-sas-url-via-storage-explorer-300x243.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-custom-setup-generate-sas-url-via-storage-explorer-768x623.png 768w\" sizes=\"(max-width: 778px) 100vw, 778px\" \/><\/a><p id=\"caption-attachment-11108\" class=\"wp-caption-text\">Create SAS URL in Azure Storage Explorer for Azure Data Factory (ADF) &#8211; SSIS Runtime Custom Setup (3rd party component installation)<\/p><\/div>\n<p><strong>Generate SAS URL from Azure Portal Online<\/strong><\/p>\n<div id=\"attachment_11109\" style=\"width: 942px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-custom-setup-generate-sas-url-via-online-portal.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11109\" class=\"size-full wp-image-11109\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-custom-setup-generate-sas-url-via-online-portal.png\" alt=\"\" width=\"932\" height=\"586\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-custom-setup-generate-sas-url-via-online-portal.png 932w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-custom-setup-generate-sas-url-via-online-portal-300x189.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-custom-setup-generate-sas-url-via-online-portal-768x483.png 768w\" sizes=\"(max-width: 932px) 100vw, 932px\" \/><\/a><p id=\"caption-attachment-11109\" class=\"wp-caption-text\">Create SAS URL in Azure Portal for Azure Data Factory (ADF) &#8211; SSIS Runtime Custom Setup (3rd party component installation)<\/p><\/div>\n<p>&nbsp;<\/li>\n<li>Copy SAS URL to clipboard and save somewhere (we will use that user later in this article)\n<div id=\"attachment_3405\" style=\"width: 669px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-ssis-custom-setup-get-container-sas-url.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3405\" class=\"size-full wp-image-3405\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-ssis-custom-setup-get-container-sas-url.png\" alt=\"Get SAS URL for Azure SSIS Runtime - Custom setup\" width=\"659\" height=\"323\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-ssis-custom-setup-get-container-sas-url.png 659w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-ssis-custom-setup-get-container-sas-url-300x147.png 300w\" sizes=\"(max-width: 659px) 100vw, 659px\" \/><\/a><p id=\"caption-attachment-3405\" class=\"wp-caption-text\">Get SAS URL for Azure SSIS Runtime &#8211; Custom setup<\/p><\/div><\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h3>Create a new SSIS &#8211; Integration Runtime for SSIS<\/h3>\n<p>Once you upload setup files for custom SSIS components and generated SAS URL for container we are ready to move on to our final step (Create SSIS Integration Runtime in Azure Data Factory)<\/p>\n<p>Steps for <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/data-factory\/create-azure-ssis-integration-runtime\" rel=\"noopener\">Creating SSIS Runtime in Azure<\/a> are clearly documented here except one change (see below).<\/p>\n<p>&nbsp;<\/p>\n<div class=\"su-note\"  style=\"border-color:#e5dd9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#FFF7B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><strong>For 3rd party SSIS component setup refer below notes:<\/strong><\/p>\n<p>Follow all steps as per this <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/data-factory\/create-azure-ssis-integration-runtime\" rel=\"noopener\">Microsoft Tutorial<\/a>\u00a0(Skip creating ADF step if you already did in the previous section). However\u00a0<strong>Microsoft Tutorial does not mention about Custom SAS URL<\/strong> (again this is still in preview so screenshot may update later). However In the\u00a0<strong>Advanced Settings<\/strong>\u00a0page during SSIS Runtime Setup (see below), Where you set\u00a0Maximum Parallel Executions Per Node you will have to enter <strong>Custom Setup URL<\/strong>. Enter SAS URL we generated in the previous section. <\/div><\/div>\n<div id=\"attachment_3407\" style=\"width: 574px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-custom-setup-sas-url.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3407\" class=\"size-full wp-image-3407\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-custom-setup-sas-url.png\" alt=\"Enter Custom Setup SAS URL during SSIS RUntime Creation in Azure Data Factory\" width=\"564\" height=\"298\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-custom-setup-sas-url.png 564w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-custom-setup-sas-url-300x159.png 300w\" sizes=\"(max-width: 564px) 100vw, 564px\" \/><\/a><p id=\"caption-attachment-3407\" class=\"wp-caption-text\">Enter Custom Setup SAS URL during SSIS RUntime Creation in Azure Data Factory<\/p><\/div>\n<p>Once your SSIS Runtime setup is done you can see your Node running in Dashboard (Status must be Green checkbox with\u00a0\u00a0<strong>Running<\/strong> ).<\/p>\n<div id=\"attachment_3410\" style=\"width: 1135px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-ssis-runtime-node-check-status.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3410\" class=\"size-full wp-image-3410\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-ssis-runtime-node-check-status.png\" alt=\"Verify SSIS Runtime Node Status in Azure Data Factory Portal\" width=\"1125\" height=\"329\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-ssis-runtime-node-check-status.png 1125w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-ssis-runtime-node-check-status-300x88.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-ssis-runtime-node-check-status-768x225.png 768w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-ssis-runtime-node-check-status-1024x299.png 1024w\" sizes=\"(max-width: 1125px) 100vw, 1125px\" \/><\/a><p id=\"caption-attachment-3410\" class=\"wp-caption-text\">Verify SSIS Runtime Node Status in Azure Data Factory Portal<\/p><\/div>\n<p>&nbsp;<\/p>\n<h2>Unregister \/ Move ZappySys License<\/h2>\n<p>There will be a time when you no longer use ADF instance or you like to use your license on a different ADF Instance. As of now there is no Customscript option for Stop action in ADF so perform the following work around to fire Unregister License command. Basically you have to restart your IR (the one which is holding your license) once to fire custom script which should contain license register action first and then unregister command right after it.<\/p>\n<p>Here is full script to unregister your license. Make sure to use this script for old ADF instance which is being deleted or from where you like to unregister ZappySys license .<\/p>\n<p><strong>Use below code in main.cmd<\/strong><\/p>\n<pre class=\"lang:ps decode:true\">set DIR=%CUSTOM_SETUP_SCRIPT_LOG_DIR%\r\n \r\necho Calling Step 1 : %TIME% &gt;&gt; \"%DIR%\\steps_log.txt\"\r\ndir \/s \/b &gt; \"%DIR%\\file_list.txt\"\r\n \r\necho Calling Step 2 : %TIME% &gt;&gt; \"%DIR%\\steps_log.txt\"\r\n\r\n::Install SSIS PowerPack\r\nmsiexec \/i  \"SSISPowerPackSetup_64bit.msi\" ADDLOCAL=ALL \/q  \/L*V \"%DIR%\\powerpack_install_log.txt\"\r\n \r\necho Calling Step 3 : %TIME% &gt;&gt; \"%DIR%\\steps_log.txt\"\r\n \r\n::Activate PowerPack license\r\n\"C:\\Program Files (x86)\\ZappySys\\SSIS PowerPack (64 bit)\\LicenseManager.exe\" -p SSISPowerPack --register \"lgGAAO0QmCxxxxxxxxxxxxxxxxWSxczM=\" --logfile \"%DIR%\\powerpack_register_log.txt\"\r\n\r\n::De-Activate same license -- This is the work around to unregister license from ADF\r\n\"C:\\Program Files (x86)\\ZappySys\\SSIS PowerPack (64 bit)\\LicenseManager.exe\" -p SSISPowerPack --unregister --logfile \"%DIR%\\powerpack_un_register_log.txt\"\r\n \r\n::Show System Info\r\necho Calling Step 4 : %TIME% &gt;&gt; \"%DIR%\\steps_log.txt\"\r\n\"C:\\Program Files (x86)\\ZappySys\\SSIS PowerPack (64 bit)\\LicenseManager.exe\" -i -l \"%DIR%\\sysinfo_log.txt\"\r\n \r\necho Calling Step 5 : %TIME% &gt;&gt; \"%DIR%\\steps_log.txt\"\r\ndir \"C:\\Program Files\\Microsoft SQL Server\\*Zappy*.*\"  \/s \/b &gt;&gt; \"%DIR%\\installed_files.txt\"\r\ndir \"C:\\Program Files (x86)\\Microsoft SQL Server\\*Zappy*.*\"  \/s \/b &gt;&gt; \"%DIR%\\installed_files.txt\"\r\n \r\necho DONE : %TIME% &gt;&gt; \"%DIR%\\steps_log.txt\"\r\n \r\necho complete<\/pre>\n<p>&nbsp;<\/p>\n<h2>Author SSIS Packages to Run in Azure Datafactory<\/h2>\n<p>Once your SSIS Runtime is set up and running your next step is to Author and Deploy SSIS Packages.<\/p>\n<ul>\n<li>To create SSIS Packages which can run in Azure Data Factory you must need <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/ssdt\/download-sql-server-data-tools-ssdt?view=sql-server-2017\" rel=\"noopener\">SSDT BI for VS 2015 or higher<\/a><\/li>\n<\/ul>\n<h2>Change SSIS Project TargetServerVersion<\/h2>\n<p>Before you deploy package to ADF you must change to to the supported Runtime by ADF. As of now 2017 (i.e. SQL Server 2017) is supported runtime so choose that one.<\/p>\n<ul>\n<li>Make sure packages are <a href=\"https:\/\/zappysys.zendesk.com\/hc\/en-us\/articles\/115004811573-How-to-change-SSIS-Package-Version-in-Visual-Studio-2015-or-Higher\" rel=\"noopener\">set to SQL 2017 Compatibility mode<\/a> (<strong>This is a must if you are using ZappySys SSIS PowerPack<\/strong>)<\/li>\n<\/ul>\n<div id=\"attachment_10195\" style=\"width: 811px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/change-ssis-targetserverversion.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-10195\" class=\"size-full wp-image-10195\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/change-ssis-targetserverversion.png\" alt=\"Change SSIS TargetServerVersion Property\" width=\"801\" height=\"499\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/change-ssis-targetserverversion.png 801w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/change-ssis-targetserverversion-300x187.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/change-ssis-targetserverversion-768x478.png 768w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/change-ssis-targetserverversion-436x272.png 436w\" sizes=\"(max-width: 801px) 100vw, 801px\" \/><\/a><p id=\"caption-attachment-10195\" class=\"wp-caption-text\">Change SSIS TargetServerVersion Property<\/p><\/div>\n<h2>Using Visual Studio to Deploy SSIS Packages to Azure (i.e. ADF SSIS-IR)<\/h2>\n<p>If you are using latest version of Visual Studio (<strong>VS2017 or Higher<\/strong>) then you can also deploy SSIS Project right from Visual Studio (See below).<\/p>\n<div id=\"attachment_8682\" style=\"width: 759px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/visual-studio-2017-2019-deploy-ssis-packages-azure-data-factory-ssis-ir-adf.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-8682\" class=\"size-full wp-image-8682\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/visual-studio-2017-2019-deploy-ssis-packages-azure-data-factory-ssis-ir-adf.png\" alt=\"Deploy SSIS Packages to Azure Data Factory from Visual Studio 2017 \/ 2019\" width=\"749\" height=\"609\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/visual-studio-2017-2019-deploy-ssis-packages-azure-data-factory-ssis-ir-adf.png 749w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/visual-studio-2017-2019-deploy-ssis-packages-azure-data-factory-ssis-ir-adf-300x244.png 300w\" sizes=\"(max-width: 749px) 100vw, 749px\" \/><\/a><p id=\"caption-attachment-8682\" class=\"wp-caption-text\">Deploy SSIS Packages to Azure Data Factory from Visual Studio 2017 \/ 2019<\/p><\/div>\n<h2>Using SSMS to Deploy \/ Execute SSIS Packages to Azure (i.e. ADF SSIS-IR)<\/h2>\n<p>Now let&#8217;s talk how to deploy SSIS Packages from your local machine to SSISDB in Azure. The process is pretty same just like how you do when deploying SSIS to On-Premises SQL Server Instance except for few steps.<\/p>\n<ul>\n<li>One important thing to remember is to deploy SSIS Packages to Azure Data Factory you must use\u00a0<a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/ssms\/download-sql-server-management-studio-ssms?view=sql-server-2017\" rel=\"noopener\">SSMS v17.x or Higher<\/a>\u00a0(Older version of SSMS doesn&#8217;t support ADF SSIS Deployment)<\/li>\n<li>Another important thing is when you connect to SQL Server Instance in Azure make sure you Click on Options on the Connect dialogbox and enter <strong>SSISDB<\/strong> in the Connect to database<\/li>\n<\/ul>\n<p>Other than those two things all steps to deploy SSIS your packages to Azure Data Factory are <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/integration-services\/lift-shift\/ssis-azure-deploy-run-monitor-tutorial?view=sql-server-2017\">listed here<\/a>.<\/p>\n<p>Here are the steps to connect to SSISDB Catalog for ADF SSIS-IR<\/p>\n<ol>\n<li>Launch <strong>SSMS<\/strong> and click <strong>Connect<\/strong> -&gt; <strong>Database Engine<\/strong><\/li>\n<li>Now on connection dialog box, Enter your Azure SQL Server FullyQualified Domain Name , UserID and\u00a0 Password<\/li>\n<li>Go to <strong>Connection Properties Tab<\/strong> like below and enter SSIS Catalog DB as <strong>SSISDB<\/strong><\/li>\n<li>Click OK and thats it. You will see Integration Services Catalog node in SSMS. If you didnt enter Catalog name as previous step then this special node is not visible in SSMS.<\/li>\n<\/ol>\n<div id=\"attachment_8680\" style=\"width: 231px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/ssms-connect-database-engine.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-8680\" class=\"size-full wp-image-8680\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/ssms-connect-database-engine.png\" alt=\"Connect to Database from SSMS\" width=\"221\" height=\"270\" \/><\/a><p id=\"caption-attachment-8680\" class=\"wp-caption-text\">Connect to Database from SSMS<\/p><\/div>\n<div id=\"attachment_3411\" style=\"width: 522px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/ssms-connect-to-ssisdb-packages-deploy-azure-data-factory-adf.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3411\" class=\"wp-image-3411 size-full\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/ssms-connect-to-ssisdb-packages-deploy-azure-data-factory-adf.png\" alt=\"Connect to Azure Data Factory - SSISDB via SSMS 17.x Or Higher ( Deploy \/ Monitor SSIS Packages) (Run SSIS in Azure Data Factory)\" width=\"512\" height=\"779\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/ssms-connect-to-ssisdb-packages-deploy-azure-data-factory-adf.png 512w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/ssms-connect-to-ssisdb-packages-deploy-azure-data-factory-adf-197x300.png 197w\" sizes=\"(max-width: 512px) 100vw, 512px\" \/><\/a><p id=\"caption-attachment-3411\" class=\"wp-caption-text\">Connect to Azure Data Factory &#8211; SSISDB via SSMS 17.x Or Higher ( Deploy \/ Monitor SSIS Packages)<\/p><\/div>\n<p>&nbsp;<\/p>\n<div id=\"attachment_3414\" style=\"width: 368px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/ssis-package-deploy-ssms-ui.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3414\" class=\"size-full wp-image-3414\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/ssis-package-deploy-ssms-ui.png\" alt=\"Deploy SSIS Package to Azure Data Factory using SSMS UI (Wizard mode)\" width=\"358\" height=\"171\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/ssis-package-deploy-ssms-ui.png 358w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/ssis-package-deploy-ssms-ui-300x143.png 300w\" sizes=\"(max-width: 358px) 100vw, 358px\" \/><\/a><p id=\"caption-attachment-3414\" class=\"wp-caption-text\">Deploy SSIS Package to Azure Data Factory using SSMS UI (Wizard mode)<\/p><\/div>\n<h2>Test \/ Execute and Monitor SSIS Package via SSMS UI<\/h2>\n<p>To execute SSIS Package via SSMS UI you can use below steps.<\/p>\n<ol>\n<li>Connect to SSISDB server using the technique listed in the previous section<\/li>\n<li>Navigate to Integration Services Catalog &gt; Your Folder &gt; Your Project &gt; Your Package &gt; Right Click and execute\n<div id=\"attachment_3415\" style=\"width: 386px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/ssis-package-execut-ssms-ui.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3415\" class=\"size-full wp-image-3415\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/ssis-package-execut-ssms-ui.png\" alt=\"Execute SSIS Package using SSMS UI\" width=\"376\" height=\"291\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/ssis-package-execut-ssms-ui.png 376w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/ssis-package-execut-ssms-ui-300x232.png 300w\" sizes=\"(max-width: 376px) 100vw, 376px\" \/><\/a><p id=\"caption-attachment-3415\" class=\"wp-caption-text\">Execute SSIS Package using SSMS UI<\/p><\/div><\/li>\n<li>To monitor or view past execution, Navigate to Integration Services Catalog &gt; Your Folder &gt; Your Project &gt; Your Package &gt; Right Click and Reports &gt; Standard Reports &gt; View All Executions\n<div id=\"attachment_3416\" style=\"width: 728px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/ssis-package-monitor-execution-view-log-report-ssms-ui.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3416\" class=\"wp-image-3416 size-full\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/ssis-package-monitor-execution-view-log-report-ssms-ui.png\" alt=\"Monitor SSIS Package Execution using SSMS UI (Run SSIS in Azure Data Factory)\" width=\"718\" height=\"366\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/ssis-package-monitor-execution-view-log-report-ssms-ui.png 718w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/ssis-package-monitor-execution-view-log-report-ssms-ui-300x153.png 300w\" sizes=\"(max-width: 718px) 100vw, 718px\" \/><\/a><p id=\"caption-attachment-3416\" class=\"wp-caption-text\">Monitor SSIS Package Execution using SSMS UI<\/p><\/div><\/li>\n<\/ol>\n<h2><\/h2>\n<p>&nbsp;<\/p>\n<h2>Schedule SSIS Package in Azure Data Factory<\/h2>\n<p>In Azure there is no SQL Agent like feature we have for on-premises SQL Server so how do you schedule packages when you deploy to ADF ? Well there is slightly different approach in ADF. You need to use feature called Trigger. Check this article to <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/data-factory\/how-to-schedule-azure-ssis-integration-runtime\" target=\"_blank\" rel=\"noopener\">learn how to schedule SSIS Package in Azure (Use Trigger)<\/a><\/p>\n<p>Here are few more approaches to <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/integration-services\/lift-shift\/ssis-azure-schedule-packages?view=sql-server-2017\" target=\"_blank\" rel=\"noopener\">to schedule SSIS Packages deployed in Azure Data Factory<\/a><\/p>\n<p>If you want to schedule SSIS Package stored in Azure Data Factory on your On-Premises server then you can use Linked Server approach mentioned in the next section. You can create a new T-SQL Job Step and call a user-defined stored procedure which can trigger SSIS package execution as per next T-SQL code.<\/p>\n<p>&nbsp;<\/p>\n<h2>Execute and Monitor SSIS Package via T-SQL Code in Azure Data Factory<\/h2>\n<p>In a real-world scenario, you have to execute SSIS Packages in an automated way from code or trigger execution on certain schedule. Microsoft has <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/integration-services\/lift-shift\/ssis-azure-schedule-packages?view=sql-server-2017\" target=\"_blank\" rel=\"noopener\">documented this scenario here<\/a> but below section will add few more details which you may find very useful. Basically, if you wish to call or schedule Azure Data Factory SSIS packages from your remote server job (i.e .Calling SSIS from On-Premises Agent Job via Job &gt; Job Step &gt; Integration Services Step ) then there are few caveats you should know. SQL Server Agent Job doesn&#8217;t allow Mixed Mode Authentication for SSISDB to call SSIS Packages (If you check Job Step UI in SQL Agent supports only Windows Authentication).<\/p>\n<p>Well, not to worry solution is not too hard. There is an easy way you can <strong>trigger remote SSIS package execution<\/strong> by using <strong>Linked Server<\/strong>\u00a0approach<strong>\u00a0<\/strong>(i.e .Call SSIS Packages stored in Azure Data Factory SSISDB).<\/p>\n<p>So let&#8217;s look at how to execute and monitor ADF SSIS Packages using Linked Server.<\/p>\n<h3>Create a Linked server for SSISDB (Azure SQL DB)<\/h3>\n<p>To <strong>execute and monitor SSIS Package execution from a remote machine<\/strong> first step is to create a Linked Server which points to a remote server which contains <strong>SSISDB<\/strong> catalog. This way you can call T-SQL Step in your Agent Job to trigger SSIS execution on the remote machine (e.g. Azure Data Factory SSISDB). When you create linked server make sure to enable <strong>rpc<\/strong> property as below.<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:tsql decode:true\">USE [master]\r\nGO\r\n--DROP Linked Server\r\n--EXEC master.dbo.sp_dropserver @server=N'SSISDB_ON_ADF', @droplogins='droplogins'\r\n\r\n--CREATE Linked Server\r\nEXEC master.dbo.sp_addlinkedserver \r\n\t@server = N'SSISDB_ON_ADF', \r\n\t@srvproduct=N'', \r\n--- For MSSQL 2012, 2014, 2016, 2017, and 2019 use below (SQL Server Native Client 11.0)---\r\n    @provider=N'SQLNCLI11',\r\n--- For MSSQL 2022 or higher use below (Microsoft OLE DB Driver for SQL Server)---\r\n--- @provider=N'MSOLEDBSQL',\r\n\t@datasrc=N'my-azure-db-server001.database.windows.net,1433', \r\n\t@catalog=N'SSISDB'\r\n\r\nEXEC master.dbo.sp_addlinkedsrvlogin \r\n\t@rmtsrvname=N'SSISDB_ON_ADF',\r\n\t@useself=N'False',\r\n\t@locallogin=NULL,\r\n\t@rmtuser=N'zsadmin',\r\n\t@rmtpassword='MyAdminUserPass@123'\r\nGO\r\nEXEC master.dbo.sp_serveroption @server=N'SSISDB_ON_ADF', @optname=N'rpc', @optvalue=N'true'\r\nGO\r\nEXEC master.dbo.sp_serveroption @server=N'SSISDB_ON_ADF', @optname=N'rpc out', @optvalue=N'true'\r\nGO<\/pre>\n<p>&nbsp;<\/p>\n<p>Once you have linked server created for SSISDB you can call it from your Agent Job Step. Use T-SQL step to call user-defined stored procedure which can call SSIS package execution mentioned in next few sections.<\/p>\n<h3>Execute SSIS Package via T-SQL Code (Set Parameters, Environment)<\/h3>\n<p>Now connect to your server where linked server is created (i.e. your On-Premises server). There are mainly 3 steps to trigger SSIS package execution via code.<\/p>\n<ol>\n<li>Create execution instance, Optionally you can supply SSIS Environment ID (grab execution id and store into some variable for later use)<\/li>\n<li>Set System, User Parameters<\/li>\n<li>Start package execution<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p>You can set some SYSTEM variables for your execution or set Package level or Project level User defined SSIS Variables for your execution. You can also set SSIS environment ID (@reference_id when you create execution)<\/p>\n<pre class=\"lang:tsql decode:true\">declare @my_execution_id bigint\r\n\r\nexec [SSISDB_ON_ADF].SSISDB.catalog.create_execution \r\n\t@folder_name = 'MyFolder'\r\n\t,@project_name = 'MySSISProject'\r\n\t,@package_name = 'MyPackage.dtsx'\r\n\t,@reference_id = null\r\n\t,@execution_id = @my_execution_id output\r\n\r\n\t\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n--Set Parameters\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n--https:\/\/docs.microsoft.com\/en-us\/sql\/integration-services\/system-stored-procedures\/catalog-set-execution-parameter-value-ssisdb-database?view=sql-server-2017\r\nexec [SSISDB_ON_ADF].SSISDB.catalog.set_execution_parameter_value  @my_execution_id, 50, 'FilePath', 'C:\\Temp\\Dump.json'  \r\nexec [SSISDB_ON_ADF].SSISDB.catalog.set_execution_parameter_value  @my_execution_id, 50, 'TargetServerName', 'Server001'  \r\n\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n--Start Execution\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n--https:\/\/docs.microsoft.com\/en-us\/sql\/integration-services\/system-stored-procedures\/catalog-start-execution-ssisdb-database?view=sql-server-2017\r\nexec [SSISDB_ON_ADF].SSISDB.catalog.start_execution @my_execution_id\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>To wait until package execution is done, you can set\u00a0SYNCHRONIZED=1 like below<\/p>\n<pre class=\"lang:tsql decode:true\">declare @my_execution_id bigint\r\n\r\nexec [SSISDB_ON_ADF].SSISDB.catalog.create_execution \r\n\t@folder_name = 'MyFolder'\r\n\t,@project_name = 'MySSISProject'\r\n\t,@package_name = 'MyPackage.dtsx'\r\n\t,@reference_id = null\r\n\t,@execution_id = @my_execution_id output\r\n\r\n\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n--Wait until execution is done\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n-- IF You want to wait until execution is done. If you enable this then no need for status check loop\r\n--https:\/\/docs.microsoft.com\/en-us\/sql\/integration-services\/system-stored-procedures\/catalog-set-execution-parameter-value-ssisdb-database?view=sql-server-2017\r\nEXEC [SSISDB_ON_ADF].[SSISDB].[catalog].[set_execution_parameter_value] \r\n\t@my_execution_id,  \r\n\t@object_type=50, \r\n\t@parameter_name=N'SYNCHRONIZED', \r\n\t@parameter_value=1\r\n\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n--Start Execution\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n--https:\/\/docs.microsoft.com\/en-us\/sql\/integration-services\/system-stored-procedures\/catalog-start-execution-ssisdb-database?view=sql-server-2017\r\nexec [SSISDB_ON_ADF].SSISDB.catalog.start_execution @my_execution_id\r\n\r\n\r\n<\/pre>\n<p>If you are using SSIS Environment to specify parameter set at runtime then use below approach to first get correct environment reference id and set for your execution.<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:tsql decode:true \">declare @my_execution_id bigint\r\ndeclare @my_env_refid int\r\n\r\nselect @my_env_refid=reference_id from [SSISDB_ON_ADF].[SSISDB].[catalog].environment_references \r\nwhere environment_name='DEV_ENV'\r\n\r\nexec [SSISDB_ON_ADF].SSISDB.catalog.create_execution \r\n\t@folder_name = 'MyFolder'\r\n\t,@project_name = 'MySSISProject'\r\n\t,@package_name = 'MyPackage.dtsx'\r\n\t,@reference_id = @my_env_refid\r\n\t,@execution_id = @my_execution_id output\r\n\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n--Start Execution\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n--https:\/\/docs.microsoft.com\/en-us\/sql\/integration-services\/system-stored-procedures\/catalog-start-execution-ssisdb-database?view=sql-server-2017\r\nexec [SSISDB_ON_ADF].SSISDB.catalog.start_execution @my_execution_id\r\n<\/pre>\n<p>&nbsp;<\/p>\n<h3>Monitor SSIS Package Execution via Code (view Log \/ Errors)<\/h3>\n<p>Here is the query to find out execution status of your SSIS package. Notice how each numeric code maps to the status description.<\/p>\n<pre class=\"lang:tsql decode:true \"> select folder_name,project_name,package_name,status_text=case \r\n\twhen status=1 then 'Created' \r\n\twhen status=2 then 'Running' \r\n\twhen status=3 then 'Cancelled' \r\n\twhen status=4 then 'Failed' \r\n\twhen status=5 then 'Pending' \r\n\twhen status=6 then 'Ended Unexpectedly' \r\n\twhen status=7 then 'Succedded' \r\n\twhen status=8 then 'Stopping' \r\n\twhen status=9 then 'Completed' \r\n\telse 'Not Sure'\r\n\tend\r\nfrom [SSISDB_ON_ADF].SSISDB.catalog.executions  where execution_id=@my_execution_id<\/pre>\n<p>&nbsp;<\/p>\n<p>To <strong>view SSIS package execution log<\/strong> you can use below query.\u00a0 Notice how we have used XML datatype. This is a workaround to see the long string in SSMS result grid. If you have more than 8000 characters in your log record then SSMS cant display by default.<\/p>\n<pre class=\"lang:tsql decode:true \">--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n--Full Log\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n--SELECT cast('&lt;![CDATA[' + message + ']]&gt;' as XML) \r\nSELECT top 1000 event_message_id as id\r\n\t, datalength(message) message_length\r\n\t, message\r\n\t, try_cast('&lt;![CDATA[' + message + ']]&gt;' as XML) as message_xml\r\n\t, message\r\n\t, package_name, event_name, message_source_name,@my_execution_id execid,message_time\r\nFROM   (SELECT        \r\n\t\tevent_message_id, operation_id, message_time, message_type, message_source_type, message, extended_info_id, package_name,\r\n        event_name, message_source_name, message_source_id, subcomponent_name, package_path, execution_path, threadID,\r\n        message_code\r\n        FROM            [SSISDB_ON_ADF].SSISDB.catalog.event_messages AS em\r\n        WHERE   (operation_id =@my_execution_id) \r\n\t\t\tAND (event_name NOT LIKE '%Validate%') \r\n\t\t\t--and event_message_id=20303352\r\n\t) AS q\r\n--Where q.event_name='OnError'\r\nORDER BY event_message_id DESC<\/pre>\n<p>&nbsp;<\/p>\n<p>To <strong>view only errors for SSIS Package execution<\/strong> use below query (replace @my_execution_id with your own value)<\/p>\n<pre class=\"lang:tsql decode:true \">--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n----Show Just Errors\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\nSELECT top 100 @my_execution_id ExecID,message, package_name, event_name, message_source_name,message_time as start_time\r\nFROM   (SELECT        \r\n\t\tevent_message_id, operation_id, message_time, message_type, message_source_type, message, extended_info_id, package_name,\r\n        event_name, message_source_name, message_source_id, subcomponent_name, package_path, execution_path, threadID,\r\n        message_code\r\n        FROM            [SSISDB_ON_ADF].SSISDB.catalog.event_messages AS em\r\n        WHERE   (operation_id =@my_execution_id) \r\n\t\t\tAND (event_name NOT LIKE '%Validate%')\r\n\t) AS q\r\nWhere q.event_name='OnError'\r\nORDER BY message_time DESC<\/pre>\n<p>&nbsp;<\/p>\n<h3>Full T-SQL Code<\/h3>\n<p>Here is the full source code of all steps we discussed.<\/p>\n<pre class=\"lang:tsql decode:true\">\/*\r\n Author: ZappySys\r\n Description: Execute, Monitor, run SSIS on Azure Data Factory\r\n - This script demonstrates few aspects of SSIS package execution via code (call system stored procedures)\r\n\t&gt;&gt; How to execute SSIS package via sa tored procedure call\r\n\t&gt;&gt; How to set package parameters via code\r\n\t&gt;&gt; How to set environment via code\r\n\t&gt;&gt; How to monitor SSIS package execution via T-SQL code\r\n\t&gt;&gt; How to check SSIS package execution status \/ error and execution log\r\n - Feel free to modify and comment uncomment certain sections to meet your need.\r\n - We used Linked server approach with 4 parts naming in objects e.g. [SSISDB_ON_ADF].SSISDB.catalog.objectnamHere\r\n - If you are running this script directly on the server where SSISDB is stored then no need for 4 parts. (just use 3 parts SSISDB.catalog.objectnamHere) \r\n we are outputting message column in xml format too so you get na ice hyper link to see the full message. This technique is needed to overcome string length limitation of SSMS\r\n\r\nUSE below script to create linked server -- Needed for Azure Data Factory - SSIS Runtime (Remote execution and Monitoring)\r\n\r\nUSE [master]\r\nGO\r\n--DROP Linked Server\r\n--EXEC master.dbo.sp_dropserver @server=N'SSISDB_ON_ADF', @droplogins='droplogins'\r\n\r\n--CREATE Linked Server\r\n--For MSSQL 2012, 2014, 2016, 2017, and 2019 use below (SQL Server Native Client 11.0)---\r\nEXEC master.dbo.sp_addlinkedserver @server = N'SSISDB_ON_ADF', @srvproduct=N'', @provider=N'SQLNCLI11', @datasrc=N'my-azure-db-server001.database.windows.net,1433', @catalog=N'SSISDB'\r\n--For MSSQL 2022 or higher use below (Microsoft OLE DB Driver for SQL Server)---\r\n--EXEC master.dbo.sp_addlinkedserver @server = N'SSISDB_ON_ADF', @srvproduct=N'', @provider=N'MSOLEDBSQL', @datasrc=N'my-azure-db-server001.database.windows.net,1433', @catalog=N'SSISDB'\r\n\r\nEXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'SSISDB_ON_ADF',@useself=N'False',@locallogin=NULL,@rmtuser=N'zsadmin',@rmtpassword='MyAdminUserPass@123'\r\nGO\r\nEXEC master.dbo.sp_serveroption @server=N'SSISDB_ON_ADF', @optname=N'rpc', @optvalue=N'true'\r\nGO\r\nEXEC master.dbo.sp_serveroption @server=N'SSISDB_ON_ADF', @optname=N'rpc out', @optvalue=N'true'\r\nGO\r\n--Below needed to support EXEC + INSERT (dynamic query)\r\nEXEC master.dbo.sp_serveroption @server=N'SSISDB_ON_ADF, @optname=N'remote proc transaction promotion', @optvalue=N'false'\r\nGO\r\n *\/\r\n\r\ndeclare @my_folder_name varchar(255)= 'AdfExamples'\r\ndeclare @my_project_name varchar(255) = 'SSISNativeExamples'\r\ndeclare @my_package_name varchar(255) = 'HelloWorld.dtsx'\r\ndeclare @my_environment_name varchar(255) = null  --e.g. This is SSIS Environment to attach with this execution (e.g. ENV_DEV , ENV_PROD)\r\n--declare @my_environment_name varchar(255) = 'ENV_DEV'\r\n\t  \r\ndeclare @my_execution_id bigint=null \r\n--declare @my_execution_id bigint=1200 --enter execid to see log\r\n\r\ndeclare @starttime datetime\r\ndeclare @statusLoop bit\r\n\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n--UN-COMMENT THIS if you just want to see last execution log rather than execute new one\r\n--IF you just need to query status of last execution \r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\nif(@my_execution_id is null)\r\n\tSelect @statusLoop=0, @my_execution_id=Max(execution_id), @startTime = Max(start_time) From [SSISDB_ON_ADF].SSISDB.catalog.executions \r\n\r\n\r\nif(@my_execution_id is null)\r\nbegin\r\n\tset @statusLoop=1 \r\n\t\r\n\tdeclare @my_env_refid int\r\n\tselect @my_env_refid=reference_id from [SSISDB_ON_ADF].[SSISDB].[catalog].environment_references where environment_name=@my_environment_name\r\n\r\n\t--First create Execution and get ExecutionID in a variable\r\n\t--https:\/\/docs.microsoft.com\/en-us\/sql\/integration-services\/system-stored-procedures\/catalog-create-execution-ssisdb-database?view=sql-server-2017\r\n\texec [SSISDB_ON_ADF].SSISDB.catalog.create_execution \r\n\t  @folder_name = @my_folder_name\r\n\t ,@project_name = @my_project_name\r\n\t ,@package_name = @my_package_name\r\n\t ,@reference_id = @my_env_refid\r\n\t ,@execution_id = @my_execution_id output\r\n\r\n\t --\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n\t--Wait until execution is done\r\n\t--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n\t -- IF You want to wait until execution is done. If you enable this then no need for status check loop\r\n\t --https:\/\/docs.microsoft.com\/en-us\/sql\/integration-services\/system-stored-procedures\/catalog-set-execution-parameter-value-ssisdb-database?view=sql-server-2017\r\n\tEXEC [SSISDB_ON_ADF].[SSISDB].[catalog].[set_execution_parameter_value] \r\n\t\t@my_execution_id,  \r\n\t\t@object_type=50, \r\n\t\t@parameter_name=N'SYNCHRONIZED', \r\n\t\t@parameter_value=1\r\n\tset @statusLoop=0 --if you enable this option no need for statucheck\r\n\t\r\n\t--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n\t--Set Parameters\r\n\t--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n\t--https:\/\/docs.microsoft.com\/en-us\/sql\/integration-services\/system-stored-procedures\/catalog-set-execution-parameter-value-ssisdb-database?view=sql-server-2017\r\n\t--exec [SSISDB_ON_ADF].SSISDB.catalog.set_execution_parameter_value  @my_execution_id, 50, 'FilePath', 'C:\\Temp\\Dump.json'  \r\n\t--exec [SSISDB_ON_ADF].SSISDB.catalog.set_execution_parameter_value  @my_execution_id, 50, 'TargetServerName', 'Server001'  \r\n\r\n\t--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n\t--Start Execution\r\n\t--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n\t--https:\/\/docs.microsoft.com\/en-us\/sql\/integration-services\/system-stored-procedures\/catalog-start-execution-ssisdb-database?view=sql-server-2017\r\n\texec [SSISDB_ON_ADF].SSISDB.catalog.start_execution @my_execution_id\r\nend\r\n\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n--Status check loop for wait\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n---comment these two lines if set SYNCHRONIZED = 1\r\nif(@statusLoop = 1)\r\nWHILE @my_execution_id IN (1,2,5,8)\r\n\tWAITFOR DELAY '00:03'\r\n--\r\n\r\n select folder_name,project_name,package_name,status_text=case \r\n\twhen status=1 then 'Created' \r\n\twhen status=2 then 'Running' \r\n\twhen status=3 then 'Cancelled' \r\n\twhen status=4 then 'Failed' \r\n\twhen status=5 then 'Pending' \r\n\twhen status=6 then 'Ended Unexpectedly' \r\n\twhen status=7 then 'Succedded' \r\n\twhen status=8 then 'Stopping' \r\n\twhen status=9 then 'Completed' \r\n\telse 'Not Sure'\r\n\tend\r\nfrom [SSISDB_ON_ADF].SSISDB.catalog.executions  where execution_id=@my_execution_id\r\n\r\n\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n----Show Just Errors\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\nSELECT top 10 @my_execution_id ExecID,message, package_name, event_name, message_source_name,message_time as start_time\r\nFROM   (SELECT        \r\n\t\tevent_message_id, operation_id, message_time, message_type, message_source_type, message, extended_info_id, package_name,\r\n        event_name, message_source_name, message_source_id, subcomponent_name, package_path, execution_path, threadID,\r\n        message_code\r\n        FROM            [SSISDB_ON_ADF].SSISDB.catalog.event_messages AS em\r\n        WHERE   (operation_id =@my_execution_id) \r\n\t\t\tAND (event_name NOT LIKE '%Validate%')\r\n\t) AS q\r\nWhere q.event_name='OnError'\r\nORDER BY message_time DESC\r\n\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n----Full Log\r\n--\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n--SELECT cast('&lt;![CDATA[' + message + ']]&gt;' as XML) \r\nSELECT top 1000 event_message_id as id\r\n\t, datalength(message) message_length\r\n\t, message\r\n\t, try_cast('&lt;![CDATA[' + message + ']]&gt;' as XML) as message_xml\r\n\t, message\r\n\t, package_name, event_name, message_source_name,@my_execution_id execid,message_time\r\nFROM   (SELECT        \r\n\t\tevent_message_id, operation_id, message_time, message_type, message_source_type, message, extended_info_id, package_name,\r\n        event_name, message_source_name, message_source_id, subcomponent_name, package_path, execution_path, threadID,\r\n        message_code\r\n        FROM            [SSISDB_ON_ADF].SSISDB.catalog.event_messages AS em\r\n        WHERE   (operation_id =@my_execution_id) \r\n\t\t\tAND (event_name NOT LIKE '%Validate%') \r\n\t\t\t--and event_message_id=20303352\r\n\t) AS q\r\n--Where q.event_name='OnError'\r\nORDER BY event_message_id DESC<\/pre>\n<p>&nbsp;<\/p>\n<h2>Creating ADF SSIS &#8211; IR using PowerShell<\/h2>\n<p>You can also create Azure Data Factory &#8211; SSIS Integration Runtime using PowerShell Code. <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/data-factory\/tutorial-deploy-ssis-packages-azure-powershell\">Check this article<\/a>. Make sure you enter SAS URL for <span class=\"lang:default decode:true crayon-inline\">$SetupScriptContainerSasUri<\/span>\u00a0 parameter.<\/p>\n<h2>Save Cost &#8211; Run SSIS-IR on demand (Start \/ Stop Runtime from Pipeline Activity)<\/h2>\n<p>There will be a time when you like to execute package once a day or once a week. Which means you will pay Cost of your SSIS-IR for unused time too. If you like to save cost on your SSIS runtime unused time you can check below links for similar topic.<\/p>\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/data-factory\/how-to-schedule-azure-ssis-integration-runtime\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.microsoft.com\/en-us\/azure\/data-factory\/how-to-schedule-azure-ssis-integration-runtime<\/a><\/p>\n<p><a href=\"https:\/\/andyleonard.blog\/2019\/02\/start-azure-ssis-execute-package-stop-azure-ssis\/\" target=\"_blank\" rel=\"noopener\">https:\/\/andyleonard.blog\/2019\/02\/start-azure-ssis-execute-package-stop-azure-ssis\/<\/a><\/p>\n<p><a href=\"http:\/\/microsoft-ssis.blogspot.com\/2018\/04\/start-and-stop-integration-runtime-in.html\" target=\"_blank\" rel=\"noopener\">http:\/\/microsoft-ssis.blogspot.com\/2018\/04\/start-and-stop-integration-runtime-in.html<\/a><\/p>\n<p>Basically idea is to Start SSIS Runtime just before you need to execute SSIS Package and Stop SSIS Runtime when you are done so you don&#8217;t incur any charges of unused SSIS-IR hours. This technique can save you huge amount of $$$ if you are executing SSIS Packages occasionally in ADF.<\/p>\n<h2>Access On-Premises Files in ADF-SSIS IR node<\/h2>\n<p>Utilize the serverless capabilities of Azure Data Factory to seamlessly interact with an Access file system. By configuring your ADF pipelines, you can perform operations on Access files while taking advantage of serverless computing resources. At some point, you may encounter the need to interact with a file system through SSIS Tasks, such as Excel Source or File System Task, while your jobs are executing in a cloud environment. Wondering how to address this challenge? Explore the article below to discover effective workarounds for implementing these solutions.<\/p>\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/data-factory\/ssis-azure-files-file-shares\" target=\"_blank\" rel=\"noopener\">Open and save files on-premises and in Azure with SSIS packages deployed in Azure<\/a><\/p>\n<h2>Using Static IP for ADF Cluster (VNet) &#8211; For External System Firewall Whitelisting<\/h2>\n<p>There will be a time when your ADF SSIS-IR needs to access an external system (e.g., AWS RDS-SQL Server) where only whitelisted IPs are allowed to access resources. In such a case, you must assign a static IP to ADF so other systems can allow that IP address in the Firewall White list.<\/p>\n<p>For this purpose you have to join your ADF into VNet (Virtual Network) and then assign Static IP as explained <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/data-factory\/join-azure-ssis-integration-runtime-virtual-network\" target=\"_blank\" rel=\"noopener\">in this article<\/a>.<\/p>\n<div class=\"su-note\"  style=\"border-color:#e5dd9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#FFF7B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">When you join the ADF SSIS-IR cluster in VNet, then Fast Provisioning is disabled. This means your cluster can take a longer time to start.\u00a0<\/div><\/div>\n<h2>Troubleshooting Common Errors<\/h2>\n<h3>Cannot find custom setup script (main.cmd) in your Azure blob container<\/h3>\n<p>When you face the below error, make sure you regenerate the SAS URL with &#8220;Create&#8221; permission along with &#8220;Read,&#8221; &#8220;Write,&#8221; and &#8220;List.&#8221; In some cases, Create permission is needed, and Cluster start fails.<\/p>\n<h2>Conclusion<\/h2>\n<p>New features in Microsoft Azure Data Factory V2 gives you truly managed option at low cost to Deploy, Execute and Monitor SSIS Packages. Using ZappySys <a href=\"https:\/\/zappysys.com\/products\/odbc-powerpack\/\">SSIS PowerPack you can add 70+ new tasks\/connectors<\/a> to your Azure Data Factory SSIS Runtime. Download and try\u00a0<a href=\"https:\/\/zappysys.com\/products\/odbc-powerpack\/\">SSIS PowerPack<\/a>\u00a0to find out many new API \/ Cloud focused features for a connected world.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction If you are using SSIS for your ETL needs and looking to reduce your overall cost then, there is a good news. Microsoft recently announced support to\u00a0run SSIS in Azure Data Factory (SSIS as Cloud Service).\u00a0Yes &#8211; that&#8217;s exciting,\u00a0 you can now run SSIS in Azure without any change in your packages (Lift and [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3409,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[41],"tags":[307,183,308,310,309,12,4],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>How to run SSIS in Azure Data Factory (Deploy, Monitor SSIS in Cloud) | ZappySys Blog<\/title>\r\n<meta name=\"description\" content=\"Step-By-Step - How to deploy and run SSIS in Azure. Setup Azure Data Factory V2 (SSIS Runtime), Deploy, Execute, Monitor &amp; Schedule SSIS Packages in Azure.\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"How to run SSIS in Azure Data Factory (Deploy, Monitor SSIS in Cloud) | ZappySys Blog\" \/>\r\n<meta property=\"og:description\" content=\"Step-By-Step - How to deploy and run SSIS in Azure. Setup Azure Data Factory V2 (SSIS Runtime), Deploy, Execute, Monitor &amp; Schedule SSIS Packages in Azure.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/\" \/>\r\n<meta property=\"og:site_name\" content=\"ZappySys Blog\" \/>\r\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/ZappySys\/\" \/>\r\n<meta property=\"article:published_time\" content=\"2018-05-04T13:59:45+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2025-09-24T15:00:56+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-adf-logo.png\" \/>\r\n\t<meta property=\"og:image:width\" content=\"269\" \/>\r\n\t<meta property=\"og:image:height\" content=\"261\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\r\n<meta name=\"author\" content=\"ZappySys\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/zappysys\/\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"ZappySys\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"23 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/\",\"url\":\"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/\",\"name\":\"How to run SSIS in Azure Data Factory (Deploy, Monitor SSIS in Cloud) | ZappySys Blog\",\"isPartOf\":{\"@id\":\"https:\/\/zappysys.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-adf-logo.png\",\"datePublished\":\"2018-05-04T13:59:45+00:00\",\"dateModified\":\"2025-09-24T15:00:56+00:00\",\"author\":{\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82\"},\"description\":\"Step-By-Step - How to deploy and run SSIS in Azure. Setup Azure Data Factory V2 (SSIS Runtime), Deploy, Execute, Monitor & Schedule SSIS Packages in Azure.\",\"breadcrumb\":{\"@id\":\"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/#primaryimage\",\"url\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-adf-logo.png\",\"contentUrl\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-adf-logo.png\",\"width\":269,\"height\":261,\"caption\":\"Azure Data Factory Logo - SSIS Integration Runtime\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/zappysys.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to run SSIS in Azure Data Factory (Deploy, Monitor SSIS in Cloud)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/zappysys.com\/blog\/#website\",\"url\":\"https:\/\/zappysys.com\/blog\/\",\"name\":\"ZappySys Blog\",\"description\":\"SSIS \/ ODBC Drivers \/ API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/zappysys.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82\",\"name\":\"ZappySys\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g\",\"caption\":\"ZappySys\"},\"sameAs\":[\"http:\/\/www.zappysys.com\/\",\"https:\/\/www.facebook.com\/ZappySys\/\",\"https:\/\/twitter.com\/https:\/\/twitter.com\/zappysys\/\"],\"url\":\"https:\/\/zappysys.com\/blog\/author\/admin\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to run SSIS in Azure Data Factory (Deploy, Monitor SSIS in Cloud) | ZappySys Blog","description":"Step-By-Step - How to deploy and run SSIS in Azure. Setup Azure Data Factory V2 (SSIS Runtime), Deploy, Execute, Monitor & Schedule SSIS Packages in Azure.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/","og_locale":"en_US","og_type":"article","og_title":"How to run SSIS in Azure Data Factory (Deploy, Monitor SSIS in Cloud) | ZappySys Blog","og_description":"Step-By-Step - How to deploy and run SSIS in Azure. Setup Azure Data Factory V2 (SSIS Runtime), Deploy, Execute, Monitor & Schedule SSIS Packages in Azure.","og_url":"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/","og_site_name":"ZappySys Blog","article_author":"https:\/\/www.facebook.com\/ZappySys\/","article_published_time":"2018-05-04T13:59:45+00:00","article_modified_time":"2025-09-24T15:00:56+00:00","og_image":[{"width":269,"height":261,"url":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-adf-logo.png","type":"image\/png"}],"author":"ZappySys","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/zappysys\/","twitter_misc":{"Written by":"ZappySys","Est. reading time":"23 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/","url":"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/","name":"How to run SSIS in Azure Data Factory (Deploy, Monitor SSIS in Cloud) | ZappySys Blog","isPartOf":{"@id":"https:\/\/zappysys.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/#primaryimage"},"image":{"@id":"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/#primaryimage"},"thumbnailUrl":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-adf-logo.png","datePublished":"2018-05-04T13:59:45+00:00","dateModified":"2025-09-24T15:00:56+00:00","author":{"@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82"},"description":"Step-By-Step - How to deploy and run SSIS in Azure. Setup Azure Data Factory V2 (SSIS Runtime), Deploy, Execute, Monitor & Schedule SSIS Packages in Azure.","breadcrumb":{"@id":"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/#primaryimage","url":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-adf-logo.png","contentUrl":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/05\/azure-data-factory-adf-logo.png","width":269,"height":261,"caption":"Azure Data Factory Logo - SSIS Integration Runtime"},{"@type":"BreadcrumbList","@id":"https:\/\/zappysys.com\/blog\/run-ssis-azure-data-factory-deploy-monitor-ssis-cloud\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zappysys.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to run SSIS in Azure Data Factory (Deploy, Monitor SSIS in Cloud)"}]},{"@type":"WebSite","@id":"https:\/\/zappysys.com\/blog\/#website","url":"https:\/\/zappysys.com\/blog\/","name":"ZappySys Blog","description":"SSIS \/ ODBC Drivers \/ API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zappysys.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82","name":"ZappySys","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g","caption":"ZappySys"},"sameAs":["http:\/\/www.zappysys.com\/","https:\/\/www.facebook.com\/ZappySys\/","https:\/\/twitter.com\/https:\/\/twitter.com\/zappysys\/"],"url":"https:\/\/zappysys.com\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/3395"}],"collection":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/comments?post=3395"}],"version-history":[{"count":59,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/3395\/revisions"}],"predecessor-version":[{"id":11487,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/3395\/revisions\/11487"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/media\/3409"}],"wp:attachment":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/media?parent=3395"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/categories?post=3395"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/tags?post=3395"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}