6

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>

1 Answer 1

11

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
Sign up to request clarification or add additional context in comments.

2 Comments

Thanks. This worked for me, just was stuck on the getting it by reference.
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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.