Platinum Gold Silver Learn & Enjoy [Put your phone on Vibrate!] www.sqlbits.com Group BY: [Food and Drink at Reading Bowl, see you there!] Feedback Forms: [Voucher for £30 book on return of Form] Lunch Time Sessions: [Idera in Everest, Quest in Memphis, Grok in Chic 1 and 2] Ask The Experts [Sessions need to finish on time, take questions to the ATE area] Extending SSIS with Custom Tasks Extending SSIS with Custom Tasks Darren Green Konesans Ltd Agenda • Extending SSIS – Types – Six Steps – Tasks – Debugging – Installation – When and Why? Types • Task • Pipeline Component – Source – Destination – Transform • Log Provider • For Each Enumerator • Connection Manager Six Steps • • • • • • Create project Add references Add signing key Write code Compile Install References • Microsoft.SQLServer.ManagedDTS – Microsoft.SqlServer.Dts.Runtime • Microsoft.SQLServer.DTSRuntimeWrap – Microsoft.SqlServer.Dts.Runtime.Wrapper • Microsoft.SqlServer.PipelineHost – Microsoft.SqlServer.Dts.Pipeline • Microsoft.SqlServer.DTSPipelineWrap – Microsoft.SqlServer.Dts.Pipeline.Wrapper • Microsoft.SqlServer.Dts.Design – Microsoft.SqlServer.Dts.Runtime.Design Custom Objects - Template [ObjectAttribute(Information)] public class MyCustomObject : BaseClass { public override void BaseMethod() { // Custom code } } Classes & Attributes Base Class Attribute ConnectionManagerBase DtsConnectionAttribute PipelineComponent DtsPipelineComponentAttribute ForEachEnumerator DtsForEachEnumeratorAttribute LogProviderBase DtsLogProviderAttribute Task DtsTaskAttribute Demo Simple Task Tasks • Methods – InitializeTask – Validate – Execute • Properties – Use attributes, editors and type converters – Use connection GUID – Write only for security when required – Custom persistence for sensitive data or complex types More Task Features • Custom Events • Custom Log Entries • Breakpoints (IDTSBreakpointSite) Create a Task User Interface • Create UI class (Implement IDtsTaskUI) • Create UI form • Set task’s UITypeName attribute Demo Simple Task User Interface Advanced Task User Interfaces • Microsoft.DataTransformationServices.Controls Microsoft.DataTransformationServices.Controls.dll • DTSBaseTaskUI Base Form Class – DTSTaskUIHost Control, paged control – Class per page, implement IDTSTaskUIView UI Classes & Attributes Interface / Class Notes IDtsConnectionManagerUI Use Win Form IDtsComponentUI Use Win Form CManagedComponentWrapper ForEachEnumeratorUI UserControl IDtsLogProviderUI Not Supported IDtsTaskUI Use Win Form Debugging • Designer – Design time – Attach to devenv.exe • Designer – Runtime – Attach to DTSDebugHost.exe • Component Project – Runtime – Start external program C:\Program...\DTExec.exe /F "C:\...TestPackage.dtsx” Debugging Tips • Ensure class and strong name is fixed at start • Must restart BIDS between builds, slow! • Use DTExec for all runtime • Use Post Build Event for install – copy "$(TargetPath)“ C:\Program... – gacutil.exe" /if "$(TargetPath)“ • Ensure persistence complete Installation Locations • Designer Enumeration Folder – Designer location only (x86 Only) C:\Program Files\Microsoft SQL Server\90\DTS\<Object> \Connections \LogProviders \ForEachEnumerators \PipelineComponents \Tasks • Global Assembly Cache – Runtime loading by execution host Install Platform Target 32-bit (x86) Location Program Files GAC • • • • x86 x64 IA64 MSIL Design Design Run Run Install in Program Files for Designer Install in GAC for run-time Support for x86 specific targeted assemblies Support for Any CPU / MSIL Install Platform Target 64-bit (x64) Location Program Files (x86) GAC • • • • • x86 x64 IA64 Design Run MSIL Design Run Support for x86 only targeted assemblies Support for x64 only targeted assemblies Support for Any CPU / MSIL Designer is x86/MSIL only Can side by side target assemblies Run Install Platform Target Itanium (IA64) Location x86 GAC • Support for IA64 • Support for Any CPU / MSIL • No designer support x64 IA64 MSIL Run Run 64-bit Tools Only Location x86 x64 IA64 MSIL Program Files (x86) GAC Run Run • No x86 file requirement • No x86 DTSPath registry key • MSI registry search is 32-bit • No key, no tools, no designer, no file required! Install Tips • Use MSI builder of choice, e.g. VS, WiX • Registry Search for DTS folder location HKLM\SOFTWARE\Microsoft\MSDTS\Setup\DTSPath C:\Program Files\Microsoft SQL Server\90\DTS\ • Allow tools only installs, don’t require 32-bit key • User Interfaces & Support Assemblies? – GAC Only • Support Files? – Use special folders, CommonApplicationData • Minimal UI, no options required When to extend • Reuse in multiple packages – Increased Development vs Lower Maintenance • • • • • Access legacy resources (COM) Complex business logic More advanced code requirements Powerful IDE Language choice Resources - Samples • Microsoft Download Center http://www.microsoft.com/downloads/ Search for “SQL Server SSIS Sample Component” • Professional SQL Server 2005 Integration Services – WROX (Ch 14 – 15 – Samples) http://www.wrox.com/WileyCDA/WroxTitle/productCd -0764584359.html • Microsoft SQL Server 2005 Integration Services – SAMS (Ch 24 – 25 - Samples) http://www.samspublishing.com/bookstore/product.a sp?isbn=0672327813 Thank You! Darren Green Konesans Ltd darren.green@konesans.com http://www.konesans.com http://www.sqldts.com http://www.sqlis.com Platinum Gold Silver www.SQLBits.com [Conference Web site] www.sqlbits.com www.SQLBlogCasts.com [Becoming the premier Blogging site for SQL professionals] www.SQLServerFAQ.com [UK SQL Server Community Website] UK SQL Bloggers cwebbbi.spaces.live.com sqlblogcasts.com/blogs/simons sqlblogcasts.com/blogs/tonyrogerson Feedback Forms!!