Monday, November 27, 2017

Data Profiling Task for Multiple Tables

I am a big fan of BIML, so when I was faced with the task of creating DataProfile Tasks for several dozens of tables in the database, I naturally turned to a quick and easy BIML solution:




There are however some other alternative solutions, like here: Using the Data Profiling Task To Profile All the Tables in a Database

Wednesday, November 22, 2017

Remember That The Regex Engine Is Eager

Just a reminder:

Regex is eager and will return the first match in the piped list expressions: (<= |<>|<)

that was important for me for trying to match equality signs, for example: "<>" or "<=" vs "<".

https://www.regular-expressions.info/alternation.html


Tuesday, November 21, 2017

Developing Custom SSIS Data Flow Component: helpful links

Great resource to start with. A sample source code is also available for download.
http://geekswithblogs.net/Compudicted/archive/2012/03/01/creating-a-custom-ssis-data-flow-component---an-example.aspx

How to work with Connections
https://docs.microsoft.com/en-us/sql/integration-services/extending-packages-custom-objects-data-flow-types/developing-a-custom-source-component

Debugging Custom component
https://docs.microsoft.com/en-us/sql/integration-services/extending-packages-custom-objects/building-deploying-and-debugging-custom-objects

1. Component Project in DEBUG mode
2. register .dll in GAC and copy it in the DTS\PipelineComponents
3. in SSIS project: breakpoint on Pre-Execute of the Data Flow Task. Wait till we hit breakpoint
4. in Component project - Debug - > Attach to process. Select DtsDebugHost.exe (Managed, x64)
5. in Component project - put a breakpoint in code in Validate or PreExecute or ProcessInput
6. in SSIS project: click Continue
7. you should hit the breakpoint in the Component project

Automate with Post-build event: registering .dll in GAC and copying it in the DTS\PipelineComponents
http://toddmcdermid.blogspot.ca/2009/01/custom-component-developing-post-build.html

this worked:
copy "$(TargetDir)$(TargetName).DLL" "C:\Program Files (x86)\Microsoft SQL Server\110\DTS\PipelineComponents\"
gacutil.exe -i "$(TargetDir)$(TargetName).DLL"

Supporting different SQL Server platforms:

Support multi-targeting in your custom components

Getting your SSIS custom extensions to be supported by the multi-version support of SSDT 2015 for SQL Server 2016

Using PerformUpgrade

https://www.red-gate.com/simple-talk/sql/ssis/developing-a-custom-ssis-source-component/

https://blogs.perficient.com/microsoft/2016/04/developing-custom-ssis-component-9-lessons-learned/

old but good - MSIL Disassembler tool

Thanks to a pesky issue with a custom icon in the Custom SSIS Data Flow Component, I found out how useful MSIL Disassembler tool could be!
http://www.sqlis.com/sqlis/post/How-to-add-an-icon-to-your-component.aspx

Thursday, July 13, 2017

GAC and debugging

Just a quick note: NEVER deploy your class library in the GAC on your DEV machine - debugging becomes hell, because Visual Studio 2015 referes to the class library in the GAC instead of the one in your Solution.

This is not too easy if you need to use GAC in order to refer to such class in your SSIS Script Component!

So now I have to uninstall it from GAC every time I need to debug

Thursday, January 19, 2017

MySQL

Amazing! Just casually researching MySQL, I found out that it was named after co-founder Michael Widenius's daughter, My. And it is posible that My was named after Little My - a character from The Book About Moomin, Mymble and Little My, by Tove Jansson. I think it is super cute!

Michael Widenius has then developed two more DB Management Systems - MariaDB and MaxDB named after his subsequent children.

And he is trying to have MariaDB replace MySQL, after it was acquired by Oracle. MariaDB is aspiring to become a bridge bewteen SQL and NOSQL on top of that...

http://www.vertabelo.com/blog/notes-from-the-lab/mysql-history

Interesting collection of articles on fact table design from Kimball Group

http://www.kimballgroup.com/category/fact-table-core-concepts/