Search code examples
ssisbiml

Adding a script task using BIML


I'm trying to add a script task to my SSIS package via BIML. How is this done? I have added the following but the ScriptTaskProjectName doesn't resolve.

        <Script Name="Script Task" LoggingMode="Enabled">  
            <ScriptTaskProjectReference ScriptTaskProjectName="MyScript"  />
        </Script>

Solution

  • The quick and dirty answer is to use the existing example on bimlscript.com

    <Biml xmlns="http://schemas.varigence.com/biml.xsd">
        <Packages>
            <Package Name="Package2" ConstraintMode="Parallel" ProtectionLevel="EncryptSensitiveWithUserKey">
                <Tasks>
                    <Script ProjectCoreName="ST_232fecafb70a4e8a904cc21f8870eed0" Name="ScriptTask 1">
                        <ScriptTaskProject>
                            <ScriptTaskProject ProjectCoreName="ST_c41ad4bf47544c49ad46f4440163feae" Name="TaskScriptProject1">
                                <AssemblyReferences>
                                    <AssemblyReference AssemblyPath="Microsoft.SqlServer.ManagedDTS.dll" />
                                    <AssemblyReference AssemblyPath="Microsoft.SqlServer.ScriptTask.dll" />
                                    <AssemblyReference AssemblyPath="System.dll" />
                                    <AssemblyReference AssemblyPath="System.AddIn.dll" />
                                    <AssemblyReference AssemblyPath="System.Data.dll" />
                                    <AssemblyReference AssemblyPath="System.Windows.Forms.dll" />
                                    <AssemblyReference AssemblyPath="System.Xml.dll" />
                                </AssemblyReferences>
                                <Files>
                                    <File Path="AssemblyInfo.cs">
                                        using System.Reflection;
                                        using System.Runtime.CompilerServices;
    
                                        //
                                        // General Information about an assembly is controlled through the following
                                        // set of attributes. Change these attribute values to modify the information
                                        // associated with an assembly.
                                        //
                                        [assembly: AssemblyTitle("ST_c41ad4bf47544c49ad46f4440163feae.csproj")]
                                        [assembly: AssemblyDescription("")]
                                        [assembly: AssemblyConfiguration("")]
                                        [assembly: AssemblyCompany("Varigence")]
                                        [assembly: AssemblyProduct("ST_c41ad4bf47544c49ad46f4440163feae.csproj")]
                                        [assembly: AssemblyCopyright("Copyright @ Varigence 2013")]
                                        [assembly: AssemblyTrademark("")]
                                        [assembly: AssemblyCulture("")]
                                        //
                                        // Version information for an assembly consists of the following four values:
                                        //
                                        //      Major Version
                                        //      Minor Version
                                        //      Build Number
                                        //      Revision
                                        //
                                        // You can specify all the values or you can default the Revision and Build Numbers
                                        // by using the '*' as shown below:
    
                                        [assembly: AssemblyVersion("1.0.*")]
                                    </File>
                                    <File Path="ScriptMain.cs">
                                        using System;
                                        using System.Data;
                                        using Microsoft.SqlServer.Dts.Runtime;
                                        using System.Windows.Forms;
    
                                        // if SSIS2012, use the following line:
                                        [Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
    
                                        // if earlier version, use the next line instead of the above line:
                                        // [System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]
                                        public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
                                        {
                                        enum ScriptResults
                                        {
                                        Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
                                        Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
                                        };
    
                                        public void Main()
                                        {
                                        Dts.TaskResult = (int)ScriptResults.Success;
                                        }
                                        }
                                    </File>
                                </Files>
                            </ScriptTaskProject>
                        </ScriptTaskProject>
                    </Script>
                </Tasks>
            </Package>
        </Packages>
    </Biml>
    

    That generates an SSIS package with a single script task attached to it.

    enter image description here

    From a comment

    In SSIS 2017, you'll need to replace the Assembly-Refs:

    • System
    • System.Data
    • System.Windows.Forms
    • System.Xml
    • Microsoft.SqlServer.TxScript
    • Microsoft.SqlServer.DTSRuntimeWrap
    • Microsoft.SqlServer.DTSPipelineWrap
    • Microsoft.SqlServer.PipelineHost