banner



How To Change A Text Color In Data Flow Ssis

Probably the biggest drawback, when it comes to documenting your SQL Server Integration Services (SSIS) packages, is the inability to word wrap your annotations. Non only does having to manually insert a return (Ctrl + Enter) at the end of each line as it approaches the border of the notation boundary, stifle the idea process, all of that careful layout is undone if the annotation is resized. Give-and-take wrapping tin can go a long way to enabling the developer'due south thoughts to menses as they provide context and clarity to the packages they are documenting.

Over the past few years I've seen many blogs and forums which decompose much of the notation binary stream, found in the SSIS parcel XML code, into its constituent components, relating the diverse bits, bytes and word values to the annotation backdrop they produce and which are found in the designer and its dialog boxes. Unfortunately, they all accept left out the $.25 that turn on discussion wrapping as well as other annotation features and capabilities that developers may observe useful. This article will provide additional information for exposing those features.

Continuing On The Shoulders Of Giants

I've learned long ago it's important to requite credit where credit is due. While I'yard excited to say, "Hey, expect what I found out!", some of what I am presenting here was as well independent in a forum mail service past Sergio Clemente Filho in February of 2010, which provided some information about the binary stream for SSIS parcel annotations. Some of that information allowed me to focus on the terminal pieces I needed for this commodity and have paraphrased a chip of that information he provided; thank you Sergio for that post. In addition, cheers to my colleagues who have directly or indirectly contributed to this commodity with their insightful answers to my countless questions.

Why Comment

Annotations can provide a articulate and curtailed clarification of package control flows, data flows, event handlers and containers. They can be scoped to provide the reader the loftier level theory of operation, a detailed description to facilitate maintenance and troubleshooting or offer step by step instructions for filling in package templates.

The consultant's objective is to leave their client and its development team to be as self-sufficient equally possible; annotated packages go a long way to aid the reader understand the work that what was washed and the product the customer now has taken ownership of. Non only are operational packages documented with the annotations, simply templates provided can are documented equally well, giving development team a kick-get-go when new packages are created to extend or expand the BI Solution.

The package modification steps described later can be maintained in a template then that they don't have to be redone each time a new package is created. Unless your packages are developed using an accelerator that automates your SSIS Packet generation with all the annotations, templates however provide a meaning time savings during evolution equally well as provide documentation consistency.

Getting Started

Consider the package annotations shown in Figures 1 and ii. This package provides a dainty make clean layout, it is very comprehensive and scoped to the package Control Flow segment. This package has a similar clarification layout and format for each data period, result handler or container used.

Figure 1. Sample Annotation

Figure 2. Sample Annotation (continued)

It's important to maintain a clean layout that will exist consistent from package to package. It can include branding of visitor colors, fonts, etc. Formatting of data into sections such equally the Overview and Control Flow volition let readers to easily observe what they are looking for.Through decomposition of the binary stream, I'll describe how to accomplish the following features:Word Wrapping/Horizontal Centering/Groundwork Fill up/Editing Prevention/Tool Tips

Navigating the XML

Instead of jumping right in and modifying your existing packages, allow's start with a new packet so that nosotros can better understand what we're looking for when making our changes. From a new project or an existing projection, create a new parcel and open it in the designer. Correct click the new package, located in the Solution Explorer window, and select View Code. You can too select Code from the under the View menu on the menu bar. The XML code that is the dtsx file is similar to the following lawmaking.

          
<?xml version="1.0"?>
<DTS:Executable xmlns:DTS="www.microsoft.com/SqlServer/Dts" DTS:ExecutableType="SSIS.Bundle.2">
<DTS:Holding DTS:Name="PackageFormatVersion">3</DTS:Holding>
<DTS:Property DTS:Name="VersionComments"></DTS:Holding>
<DTS:Property DTS:Proper name="CreatorName">Paul-PC\Paul</DTS:Property>
<DTS:Property DTS:Name="CreatorComputerName">PAUL-PC</DTS:Property>
<DTS:Property DTS:Name="CreationDate" DTS:DataType="7">ten/23/2010 iii:11:36 PM</DTS:Holding>
<DTS:Property DTS:Proper noun="PackageType">five</DTS:Holding>
<DTS:Holding DTS:Name="ProtectionLevel">1</DTS:Belongings>
<DTS:Belongings DTS:Proper noun="MaxConcurrentExecutables">-ane</DTS:Property>
<DTS:Property DTS:Proper noun="PackagePriorityClass">0</DTS:Property>
<DTS:Holding DTS:Proper noun="VersionMajor">1</DTS:Property>
<DTS:Property DTS:Name="VersionMinor">0</DTS:Property>
<DTS:Belongings DTS:Name="VersionBuild">0</DTS:Holding>
<DTS:Holding DTS:Name="VersionGUID">{6D7F7799-4636-412E-8A6D-06A18464909F}</DTS:Property>
<DTS:Property DTS:Proper name="EnableConfig">0</DTS:Holding>
<DTS:Property DTS:Name="CheckpointFileName"></DTS:Property>
<DTS:Property DTS:Name="SaveCheckpoints">0</DTS:Property>
<DTS:Belongings DTS:Name="CheckpointUsage">0</DTS:Holding>
<DTS:Belongings DTS:Name="SuppressConfigurationWarnings">0</DTS:Property>
<DTS:Holding DTS:Proper noun="LastModifiedProductVersion">10.0.2531.0</DTS:Property>
<DTS:Holding DTS:Name="ForceExecValue">0</DTS:Property>
<DTS:Belongings DTS:Name="ExecValue" DTS:DataType="3">0</DTS:Holding>
<DTS:Holding DTS:Name="ForceExecutionResult">-1</DTS:Holding>
<DTS:Property DTS:Name="Disabled">0</DTS:Belongings>
<DTS:Property DTS:Proper noun="FailPackageOnFailure">0</DTS:Holding>
<DTS:Property DTS:Proper name="FailParentOnFailure">0</DTS:Property>
<DTS:Property DTS:Proper noun="MaxErrorCount">1</DTS:Property>
<DTS:Property DTS:Proper name="ISOLevel">1048576</DTS:Property>
<DTS:Property DTS:Proper noun="LocaleID">1033</DTS:Property>
<DTS:Property DTS:Name="TransactionOption">i</DTS:Property>
<DTS:Property DTS:Proper noun="DelayValidation">0</DTS:Property>
<DTS:LoggingOptions>
<DTS:Property DTS:Name="LoggingMode">0</DTS:Property>
<DTS:Holding DTS:Proper noun="FilterKind">1</DTS:Property>
<DTS:Property DTS:Name="EventFilter" DTS:DataType="8"></DTS:Holding>
</DTS:LoggingOptions>
<DTS:Property DTS:Name="ObjectName">Package2</DTS:Property>
<DTS:Property DTS:Proper noun="DTSID">{DAE99452-707C-485D-9866-E263BCBEC847}</DTS:Holding>
<DTS:Holding DTS:Proper name="Description"></DTS:Belongings>
<DTS:Property DTS:Proper noun="CreationName">SSIS.Parcel.2</DTS:Property>
<DTS:Property DTS:Name="DisableEventHandlers">0</DTS:Property>
</DTS:Executable>

Now, in the package designer, right click the design expanse and select Add Annotation from the pop up bill of fare. In the annotation, type the discussion Test. This volition provide a simple baseline to work from then that nosotros minimize any confusion. Once yous've typed Test into the annotation, deselect the notation and view the xml code again. You'll run into that two new PackageVariable nodes were added to the xml, right after the DTS:Holding DisableEventHandlers property.

          
<?xml version="i.0"?>
<DTS:Executable xmlns:DTS="world wide web.microsoft.com/SqlServer/Dts" DTS:ExecutableType="SSIS.Package.2">
<DTS:Holding DTS:Proper name="PackageFormatVersion">3</DTS:Property>
<DTS:Holding DTS:Name="VersionComments"></DTS:Property>
<DTS:Property DTS:Name="CreatorName">Paul-PC\Paul</DTS:Holding>
<DTS:Property DTS:Name="CreatorComputerName">PAUL-PC</DTS:Holding>
<DTS:Property DTS:Name="CreationDate" DTS:DataType="seven">ten/23/2010 iii:11:36 PM</DTS:Property>
<DTS:Property DTS:Name="PackageType">5</DTS:Property>
<DTS:Property DTS:Name="ProtectionLevel">1</DTS:Property>
<DTS:Property DTS:Name="MaxConcurrentExecutables">-1</DTS:Belongings>
<DTS:Holding DTS:Name="PackagePriorityClass">0</DTS:Property>
<DTS:Property DTS:Name="VersionMajor">1</DTS:Holding>
<DTS:Holding DTS:Name="VersionMinor">0</DTS:Property>
<DTS:Belongings DTS:Name="VersionBuild">1</DTS:Property>
<DTS:Property DTS:Proper noun="VersionGUID">{6DE977C5-B1F1-49CA-B5A9-4CDEE07D8D52}</DTS:Holding>
<DTS:Belongings DTS:Proper name="EnableConfig">0</DTS:Property>
<DTS:Property DTS:Name="CheckpointFileName"></DTS:Property>
<DTS:Belongings DTS:Name="SaveCheckpoints">0</DTS:Belongings>
<DTS:Property DTS:Name="CheckpointUsage">0</DTS:Property>
<DTS:Property DTS:Name="SuppressConfigurationWarnings">0</DTS:Property>
<DTS:Property DTS:Name="LastModifiedProductVersion">x.0.2531.0</DTS:Property>
<DTS:Property DTS:Proper name="ForceExecValue">0</DTS:Property>
<DTS:Property DTS:Name="ExecValue" DTS:DataType="3">0</DTS:Holding>
<DTS:Belongings DTS:Name="ForceExecutionResult">-1</DTS:Holding>
<DTS:Property DTS:Name="Disabled">0</DTS:Property>
<DTS:Property DTS:Name="FailPackageOnFailure">0</DTS:Property>
<DTS:Property DTS:Name="FailParentOnFailure">0</DTS:Holding>
<DTS:Belongings DTS:Name="MaxErrorCount">1</DTS:Property>
<DTS:Property DTS:Name="ISOLevel">1048576</DTS:Property>
<DTS:Property DTS:Name="LocaleID">1033</DTS:Property>
<DTS:Property DTS:Name="TransactionOption">1</DTS:Belongings>
<DTS:Property DTS:Name="DelayValidation">0</DTS:Property>
<DTS:LoggingOptions>
<DTS:Property DTS:Name="LoggingMode">0</DTS:Holding>
<DTS:Property DTS:Proper noun="FilterKind">one</DTS:Property>
<DTS:Property DTS:Name="EventFilter" DTS:DataType="8"></DTS:Property>
</DTS:LoggingOptions>
<DTS:Property DTS:Name="ObjectName">Package2</DTS:Property>
<DTS:Holding DTS:Name="DTSID">{DAE99452-707C-485D-9866-E263BCBEC847}</DTS:Property>
<DTS:Property DTS:Proper name="Description"></DTS:Belongings>
<DTS:Property DTS:Proper name="CreationName">SSIS.Package.2</DTS:Belongings>
<DTS:Property DTS:Name="DisableEventHandlers">0</DTS:Holding>
<DTS:PackageVariable>
<DTS:Belongings DTS:Name="PackageVariableValue" DTS:DataType="viii">
&lt;Packet xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-example" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/two/two" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:dwd="http://schemas.microsoft.com/DataWarehouse/Designer/1.0"&gt;&lt;dwd:DtsControlFlowDiagram&gt;&lt;dwd:Layout&gt;&lt;dds&gt;
&lt;diagram fontclsid="{0BE35203-8F91-11CE-9DE3-00AA004BB851}" mouseiconclsid="{0BE35204-8F91-11CE-9DE3-00AA004BB851}" defaultlayout="Microsoft.DataWarehouse.Layout.GraphLayout100" defaultlineroute="Microsoft.DataWarehouse.Layout.GraphLayout100" version="7" nextobject="4" scale="100" pagebreakanchorx="0" pagebreakanchory="0" pagebreaksizex="0" pagebreaksizey="0" scrollleft="0" scrolltop="0" gridx="150" gridy="150" marginx="1000" marginy="1000" zoom="100" x="22437" y="12197" backcolor="15334399" defaultpersistence="2" PrintPageNumbersMode="iii" PrintMarginTop="0" PrintMarginBottom="635" PrintMarginLeft="0" PrintMarginRight="0" marqueeselectionmode="i" mousepointer="0" snaptogrid="0" autotypeannotation="1" showscrollbars="0" viewpagebreaks="0" donotforceconnectorsbehindshapes="1" backpictureclsid="{00000000-0000-0000-0000-000000000000}"&gt;
&lt;font&gt;
&lt;ddsxmlobjectstreamwrapper binary="01000000900144420100065461686f6d61" /&gt;
&lt;/font&gt;
&lt;mouseicon&gt;
&lt;ddsxmlobjectstreamwrapper binary="6c74000000000000" /&gt;
&lt;/mouseicon&gt;
&lt;/diagram&gt;
&lt;layoutmanager&gt;
&lt;ddsxmlobj /&gt;
&lt;/layoutmanager&gt;
&lt;ddscontrol controlprogid="MSDDS.Text" left="7541" top="2408" logicalid="three" controlid="3" masterid="0" hint1="0" hint2="0" width="6000" height="1500" noresize="0" nomove="0" nodefaultattachpoints="one" autodrag="0" usedefaultiddshape="ane" selectable="i" showselectionhandles="1" allownudging="1" isannotation="0" dontautolayout="1" groupcollapsed="0" tabstop="1" visible="ane" snaptogrid="0"&gt;
&lt;command&gt;
&lt;ddsxmlobjectstreaminitwrapper binary="0002000070170000dc0500000300640000000500008008000080000000002a0001000000900144420100065461686f6d610400540065007300740000000000" /&gt;
&lt;/control&gt;
&lt;layoutobject&gt;
&lt;ddsxmlobj /&gt;
&lt;/layoutobject&gt;
&lt;shape groupshapeid="0" groupnode="0" /&gt;
&lt;/ddscontrol&gt;
&lt;/dds&gt;&lt;/dwd:Layout&gt;&lt;/dwd:DtsControlFlowDiagram&gt;&lt;/Package&gt;
</DTS:Property>
<DTS:Property DTS:Name="Namespace">dts-designer-one.0</DTS:Belongings>
<DTS:Property DTS:Proper noun="ObjectName">{DAE99452-707C-485D-9866-E263BCBEC847}</DTS:Belongings>
<DTS:Property DTS:Proper noun="DTSID">{D078B32A-DABB-43AC-974B-CE717A3C2492}</DTS:Property>
<DTS:Property DTS:Name="Description"></DTS:Property>
<DTS:Property DTS:Proper noun="CreationName"></DTS:Property>
</DTS:PackageVariable>
<DTS:PackageVariable>
<DTS:Property DTS:Proper name="PackageVariableValue" DTS:DataType="8">
&lt;Package xmlns:xsd="http://world wide web.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/ii" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:dwd="http://schemas.microsoft.com/DataWarehouse/Designer/ane.0"&gt;&lt;dwd:DtsControlFlowDiagram&gt;&lt;dwd:Layout&gt;&lt;dds&gt;
&lt;diagram fontclsid="{0BE35203-8F91-11CE-9DE3-00AA004BB851}" mouseiconclsid="{0BE35204-8F91-11CE-9DE3-00AA004BB851}" defaultlayout="Microsoft.DataWarehouse.Layout.GraphLayout100" defaultlineroute="Microsoft.DataWarehouse.Layout.GraphLayout100" version="7" nextobject="4" scale="100" pagebreakanchorx="0" pagebreakanchory="0" pagebreaksizex="0" pagebreaksizey="0" scrollleft="0" scrolltop="0" gridx="150" gridy="150" marginx="1000" marginy="m" zoom="100" x="22437" y="12197" backcolor="15334399" defaultpersistence="two" PrintPageNumbersMode="3" PrintMarginTop="0" PrintMarginBottom="635" PrintMarginLeft="0" PrintMarginRight="0" marqueeselectionmode="1" mousepointer="0" snaptogrid="0" autotypeannotation="1" showscrollbars="0" viewpagebreaks="0" donotforceconnectorsbehindshapes="1" backpictureclsid="{00000000-0000-0000-0000-000000000000}"&gt;
&lt;font&gt;
&lt;ddsxmlobjectstreamwrapper binary="01000000900144420100065461686f6d61" /&gt;
&lt;/font&gt;
&lt;mouseicon&gt;
&lt;ddsxmlobjectstreamwrapper binary="6c74000000000000" /&gt;
&lt;/mouseicon&gt;
&lt;/diagram&gt;
&lt;layoutmanager&gt;
&lt;ddsxmlobj /&gt;
&lt;/layoutmanager&gt;
&lt;ddscontrol controlprogid="MSDDS.Text" left="7541" tiptop="2408" logicalid="3" controlid="3" masterid="0" hint1="0" hint2="0" width="6000" height="1500" noresize="0" nomove="0" nodefaultattachpoints="1" autodrag="0" usedefaultiddshape="one" selectable="i" showselectionhandles="ane" allownudging="1" isannotation="0" dontautolayout="one" groupcollapsed="0" tabstop="i" visible="1" snaptogrid="0"&gt;
&lt;control&gt;
&lt;ddsxmlobjectstreaminitwrapper binary="0002000070170000dc0500000300640000000500008008000080000000002a0001000000900144420100065461686f6d610400540065007300740000000000" /&gt;
&lt;/control&gt;
&lt;layoutobject&gt;
&lt;ddsxmlobj /&gt;
&lt;/layoutobject&gt;
&lt;shape groupshapeid="0" groupnode="0" /&gt;
&lt;/ddscontrol&gt;
&lt;/dds&gt;&lt;/dwd:Layout&gt;&lt;/dwd:DtsControlFlowDiagram&gt;&lt;/Package&gt;
</DTS:Property>
<DTS:Property DTS:Name="Namespace">dts-designer-1.0</DTS:Property>
<DTS:Property DTS:Name="ObjectName">parcel-diagram</DTS:Property>
<DTS:Belongings DTS:Name="DTSID">{3AE7A523-74AB-4929-88E9-4524A5261359}</DTS:Property>
<DTS:Holding DTS:Proper noun="Description"></DTS:Property>
<DTS:Property DTS:Name="CreationName"></DTS:Property>
</DTS:PackageVariable>
</DTS:Executable>

I've pulled the PackageVariable nodes out and so that we can focus on them. In a package at that place is one PackageVariable node for each precedence constraint, pipeline path, event handler and data period task and two PackageVariable nodes for the control flow. The elements of the PackageVariable are shown beneath with the PackageVariableValue element value removed.

          
<DTS:PackageVariable>
<DTS:Belongings DTS:Proper noun="PackageVariableValue" DTS:DataType="8"></DTS:Holding>
<DTS:Belongings DTS:Proper name="Namespace">dts-designer-one.0</DTS:Property>
<DTS:Property DTS:Proper noun="ObjectName">{DAE99452-707C-485D-9866-E263BCBEC847}</DTS:Property>
<DTS:Property DTS:Proper name="DTSID">{D078B32A-DABB-43AC-974B-CE717A3C2492}</DTS:Belongings>
<DTS:Property DTS:Proper name="Description"></DTS:Property>
<DTS:Belongings DTS:Proper name="CreationName"></DTS:Property>
</DTS:PackageVariable>
<DTS:PackageVariable>
<DTS:Property DTS:Proper name="PackageVariableValue" DTS:DataType="8"></DTS:Property>
<DTS:Belongings DTS:Name="Namespace">dts-designer-1.0</DTS:Property>
<DTS:Property DTS:Name="ObjectName">package-diagram</DTS:Belongings>
<DTS:Holding DTS:Name="DTSID">{3AE7A523-74AB-4929-88E9-4524A5261359}</DTS:Property>
<DTS:Holding DTS:Name="Description"></DTS:Property>
<DTS:Holding DTS:Proper name="CreationName"></DTS:Belongings>
</DTS:PackageVariable>

The PackageVariableValue for both the control menstruum PackageVariable nodes are identical and contain xml with the < and > characters changed to < and > respectively so that they are evaluated at the advisable time. I've replaced the < and > and reformatted the xml for our review. The xml for Event Handlers and Data Menstruation tasks would have similar layouts with their root node being DtsEventHandler and TaskHost, respectively.

          
<Parcel xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://world wide web.w3.org/2001/XMLSchema-case" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/ii" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/two/two" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:dwd="http://schemas.microsoft.com/DataWarehouse/Designer/one.0">
<dwd:DtsControlFlowDiagram>
<dwd:Layout>
<dds>
<diagram fontclsid="{0BE35203-8F91-11CE-9DE3-00AA004BB851}" mouseiconclsid="{0BE35204-8F91-11CE-9DE3-00AA004BB851}" defaultlayout="Microsoft.DataWarehouse.Layout.GraphLayout100" defaultlineroute="Microsoft.DataWarehouse.Layout.GraphLayout100" version="7" nextobject="4" scale="100" pagebreakanchorx="0" pagebreakanchory="0" pagebreaksizex="0" pagebreaksizey="0" scrollleft="0" scrolltop="0" gridx="150" gridy="150" marginx="1000" marginy="thousand" zoom="100" x="22437" y="12197" backcolor="15334399" defaultpersistence="two" PrintPageNumbersMode="3" PrintMarginTop="0" PrintMarginBottom="635" PrintMarginLeft="0" PrintMarginRight="0" marqueeselectionmode="1" mousepointer="0" snaptogrid="0" autotypeannotation="one" showscrollbars="0" viewpagebreaks="0" donotforceconnectorsbehindshapes="i" backpictureclsid="{00000000-0000-0000-0000-000000000000}">
<font>
<ddsxmlobjectstreamwrapper binary="01000000900144420100065461686f6d61" />
</font>
<mouseicon>
<ddsxmlobjectstreamwrapper binary="6c74000000000000" />
</mouseicon>
</diagram>
<layoutmanager>
<ddsxmlobj />
</layoutmanager>
<ddscontrol controlprogid="MSDDS.Text" left="7541" top="2408" logicalid="iii" controlid="3" masterid="0" hint1="0" hint2="0" width="6000" height="1500" noresize="0" nomove="0" nodefaultattachpoints="1" autodrag="0" usedefaultiddshape="1" selectable="i" showselectionhandles="i" allownudging="1" isannotation="0" dontautolayout="1" groupcollapsed="0" tabstop="1" visible="ane" snaptogrid="0">
<command>
<ddsxmlobjectstreaminitwrapper binary="0002000070170000dc0500000300640000000500008008000080000000002a0001000000900144420100065461686f6d610400540065007300740000000000" />
</command>
<layoutobject>
<ddsxmlobj />
</layoutobject>
<shape groupshapeid="0" groupnode="0" />
</ddscontrol>
</dds>
</dwd:Layout>
</dwd:DtsControlFlowDiagram>
</Package>

The Binary Stream

The part of the PackageVariableValue xml that we are particularly interested in is the binary aspect of the ddsxmlobjectstreaminitwrapper node contained within the ddscontrol node with the attribute, containing the controlprogid = "MSDSS.Text" attribute. To simplify the decomposition of the binary stream, I'grand going to break it into 3 parts; container, font and text so that we can see the controls for the diverse features we are going to expose. Thanks again, Sergio, for your contributions, these contributions are marked with an asterisk (*).

Container

0002000070170000dc0500000300640000000500008008000080000000002a00
The kickoff 64 digits of the binary stream provide a drove of information about the annotation container such every bit width and height, foreground and groundwork color every bit well every bit text alignment.

Header

The first eight digits of the Container portion, 00020000, are unknown to me. They may be a marker or header indicating the binary stream is an annotation. I've changed it, went to the designer and moved the annotation, then returned to the xml simply to discover it reverted back to the default.

Width

The next viii digits of the binary stream, positions nine - xvi of the binary stream, represent the width of the annotation box. The stream value, 70170000, represents the hex value, 00001770; the 4 2 digit pairs are reversed. When you catechumen that number from hex to decimal you get the value, 6000, which is the value of the width attribute of the ddscontrol chemical element. Irresolute the value of the binary stream has no effect, however, changing the value of the width aspect will modify the binary stream when the designer is refreshed.

Height

The next viii digits, positions 17 - 24 of the binary stream, stand for the acme of the annotation box and behave the same equally the width. The value, dc050000, represent the hex value, 000005dc, or a width of 1500. While neither the width nor top appear to exist affected past modifications in the binary stream, it may exist helpful to know what these digits stand for, in instance yous are motorcar generating your SSIS packages.

Unknown

The next 12 digits, 030064000000, positions 25 - 36 of the binary stream, are unknown. It is interesting to notation that adornments, texts that annotate precedence constraints or pipeline paths, do not contain the 64 in their binary stream.

Background Color

The adjacent 8 digits, 05000080, positions 37 - 44 of the binary stream, are used to command the background color of the annotation. The first three hexadecimal pairs represent the hexadecimal value of the RGB colour while the concluding hex pair, 80, enables the custom color. To make the groundwork red, the 05000080 would be changed to ff000000. When the annotation is selected the background color would change to ruby only would revert to transparent when de-selected. By default, the groundwork is transparent; this control is described in the Transparency & Give-and-take Wrapping paragraph. To get the post-obit colors, modify 05000080 to:

  • Crimson = ff00000
  • Green = 00ff0000
  • Blue = 0000ff00

You can refer to other color charts to get the desired colors.

Foreground (Text) Colour *

Like the groundwork colour, the text color or foreground color is controlled by the side by side 8 digits, 08000080, positions 45 - 52 of the binary stream. The first iii hex decimals represent the hexadecimal value of the RGB color while the final hex pair, 80, enables the custom color. It is recommended that unless you're building your packages programmatically, you should use the font control console provided by BIDS to make color changes to your text.

Horizontal Justification

The next eight digits, 00000000, positions 53 - threescore of the binary stream, effect the horizontal centering. If the digits are inverse to 02000000, then correct justification is achieved. 01000000 causes center justification while all zeros, 00000000 left justification is gear up. I suspect that there is a combination in these hex decimals that will enable the vertical alignment, but I have non discovered it withal.

Transparency & Give-and-take Wrapping

The next hex value, position 61 in the binary stream, serves every bit a bitmask determining both background transparency and, the Holy Grail for annotations, word wrapping. The value 2, establish in the default binary stream, tin can be represented past the binary value, 0010. Of the four bits the 3rd bit turns transparency on when it is a one and the fourth or final bit turns give-and-take wrapping on when it is a 1. The ii bits have no effect on formatting; when a hex value greater than three is inserted into the binary stream the first two bits are reset to zero when the designer is refreshed.

When transparency is on, 001X, where the 10 tin be either a 1 or 0, the background colors appear only when the notation is being edited. Turning transparency off, 000X, volition persist the background colour when focus is removed from the annotation.

When word wrapping is turned on, 00X1, the text lines in the annotation that run past the edge of the annotation are wrapped at the notation purlieus and will adjust automatically when the annotation is resized.

This table provides a summary of the 61st hex value
Position 61 Binary Transparency Word Wrap
0 XX00 Off Off
1 XX01 Off On
2 XX10 On Off
iii XX11 On On

Delete When Empty, Auto Sizing & Read But

Like the 61st digit, the 62nd digit, with the value of "a" by default, controls multiple note features. The hex value's binary representation serves as a bitmask to delete the annotations when it'due south empty, enable or disable motorcar sizing of the annotation box, vertical centering of the text inside the notation and making the notation read only.

This table provides a summary of the 62nd hex value
Position 62 Binary Delete When Empty Machine Size Vertical Eye Read Only
ii 0010 Off Off Off Off
3 0011 Off Off Off On
6 0110 Off On Off Off
7 0111 Off On Off On
a 1010 On Off Off Off
b 1011 On Off Off On
e 1110 On On Off Off
f 1111 On On Off On

When Auto Size is combined with Discussion Wrap, the width of the annotation will non change however, the length will grow every bit more than text is added, wrapping the line, thereby creating more lines. When the Vertical Centering is enabled, the Ctrl + Enter is ignored and the line of text remains in the middle of the notation box. In addition, because the Ctrl + Enter has no event, Word Wrap is ignored when Vertical centering is enabled.

The last two hex values of the Container section of the binary stream have no credible functionality.

Font

01000000900144420100065461686f6d61

The length of the Font segment of the binary stream varies depending on the length of the name of the font existence used, yet it volition always begin with the 65th digit of the binary stream. If you lot locate the ddsxmlobjectstreamwrapper binary attribute in the font node of the diagram, you notice the value of the attribute is the same every bit the Font segment, in a higher place.

Script

The first ii hex digits in the font segment, positions 65 & 66 of the binary stream, appear to be nothing more than a header of some sort and accept no effect on the font. The next ii digits, positions 67 & 68, concord the script type that's institute in the Font dialog box. The default, Western, is 00.

Italics, Underline & Strikethrough*

Jumping to the eighth digit of the Font segment, position 72 of the binary stream, is the bitmask that controls Italics, Underlining and Strikethroughs. The hex to binary is as follows:

This table provides a summary of the 72nd hex value
Position 72 Binary Italics Underline Strikethrough
0 000X Off Off Off
2 001X On Off Off
4 010X Off On Off
6 011X On On Off
eight 100X Off Off On
a 101X On Off On
c 110X Off On On
eastward 111X On On On

Bold*

The side by side 4 hexadecimal digits, positions 73 - 76 of the binary stream, are used to decide regular or bold text. When the value is 9001, the default, the text is regular, when information technology is bc02, information technology is bold.

Font Size*

The font size is determined by the next 8 digits of the font segment, positions 77 - 84 of the binary stream, which are 4 hex pairs. Reading these pairs in reverse society as the hex value, converting to decimal, and so dividing by 10,000 volition provide the font size. The default value, 44420100, stand for the hexadecimal value, 00014244, which converts to a decimal value of 82,500. Dividing 82,500 by 10,000 returns eight.25 which is the default betoken size of the annotation font.

Font Name Length*

The next two hex digits, positions 85 & 86 of the binary stream, correspond the length of the font proper noun. The default, 06, is decimal 6 which is the length of the name Tahoma.

Font Proper name*

The next pairs of hex digits, as adamant past the Font Name Length, represent the ASCII number of the Font Proper name. These are Non-Unicode values.

Text

0400540065007300740000000000

The offset of the Text segment of the binary stream is dependant on the length of the font proper name used for the annotation. In this give-and-take, the text segment begins at position 99 of the binary stream and will alter as the length of the font proper name changes. The post-obit sections describe the sub-components of the Text segment

Text Length*

The length of the text is represented past the first 4 hex digits and is read in pairs in opposite society. The length of our text is represented by 0400 which translates to 0004 in hexadecimal or iv in decimal.

Text*

Except for the trailing 8 digits, the remaining digits are the characters in the text in Unicode. Each grouping of 4 digits represents a Unicode value in two groups of two digits in opposite order. For example, our text, Examination, would be decoded as follows:

Binary Stream to Grapheme Translation
Binary Stream Hexadecimal Decimal Character
5400 0054 84 T
6500 0065 101 e
7300 0073 115 southward
7400 0074 116 t

Other Features

In addition to decision-making the annotation through the binary stream, other features can be added through the attributes of the ddscontrol node. For case, along with disabling Editing through the 62nd binary stream bit, you can also make the annotation not-selectable by setting the selectable attribute to 0. However, making the annotations non-selectable could exist troublesome should the Automobile-Layout be inadvertently performed. You will accept to go into the xml and re-enable selectability earlier you lot can select your annotations to layout.

Also, you can add a tooltip attribute in the commencement of the ddscontrol node to provide information or instruction to the reader when they hover over your annotations.

Finding Your Annotations in the XML

Considering we started with a make clean package, information technology was very easy to find the controlprogid="MSDDS.Text" aspect which helped place the annotation. Still, when you accept many tasks in your command flow and event handlers, and data flow tasks containing several components, yous're probable to have a lot adornments, annotations on the precedence constraints and pipeline paths that cannot be edited. These nodes, the adornments, typically have a masterid that refers back to a controlid of a polyline node and will have the value of 2500 or 3500 at the terminate of the container segment, positions 61 - 64 of the binary stream.

Adding Branded Annotations

What is meant by "Branded" is the utilize of a company color scheme, typeface, etc. and in this get-go example I will evidence how to apply a color schemes with discussion wrapping and a predetermined width. Let's create a format every bit shown in the next Effigy which requires a header and its subsequent text using our colour scheme, presetting our notation to word wrap at a predefined width.

In the Blueprint view of the parcel, right click in the designer area and select Add Notation from the pop-up menu, then type Header.

By default, this will create an annotation that has a width of 6000 and a height of 1500, having a font of Tahoma with regular typeface and size of viii (actually 8.25) whose text is Header. In the XML, the annotation is represented by the three segments of the binary stream, described earlier, as follows:

Container
0002000070170000dc0500000300640000000500008008000080000000002a00

Font
01000000900144420100065461686f6d61

Text
060048006500610064006500720000000000

Nosotros are going to change our text color to bluish (RGB = 005288), keep the same Tahoma font, just use the Bold typeface for the header with a size of 12. In add-on, we'll set the width of our annotations from 600 to 13000.

Using the data provided before, the three segments of the binary stream will change to arrange the desired formatting. The width portion of the Container segment will change from 70170000 to 50320000, the text colour portion, from 08000080 to 00528800 while discussion wrapping will be turned on changing 2a00 will change to 3a00. In addition, the typeface portion of the Font segment will change from 9001 to bc02 while the size portion will change from 444201 to c0d401. The text will have no changes at this time. The resultant segments of the binary stream volition exist changed as follows:

Container
0002000070170000dc0500000300640000000500008008000080000000002a00 - Erstwhile
0002000050320000dc0500000300640000000500008000528800000000003a00 - New

Font
01000000900144420100065461686f6d61 - Quondam
01000000bc02c0d40100065461686f6d61 - New

Text
060048006500610064006500720000000000

In the XML file of the bundle, we're going to exercise a Notice and Replace of our binary stream. Nosotros kept our text relatively small and so we shouldn't have an issue with a string that is too long. In the package XML, open the Find and Replace, select Quick Replace and enter the following:

Observe what:
0002000070170000dc0500000300640000000500008008000080000000002a0001000000900144420100065461686f6d61060048006500610064006500720000000000

Supplant with:
0002000050320000dc0500000300640000000500008000528800000000003a0001000000bc02c0d40100065461686f6d61060048006500610064006500720000000000

If all was entered properly, you should go right to your note. Retrieve, for the Control catamenia, at that place are two Packet Variables to create the annotations, therefore, wait to run into two replacements. If yous created your annotation in a Data Flow or Event Handler, you'd make only one change. Click dorsum on your Designer and notice the header note has changed.

Create another annotation as before, only this time, enter <<Text>>.

For the text portion of our annotations our colour scheme will be the same too as the utilise of the same font with a regular type face, just change the size to 10. In addition, the <<Text>> notation will be the same width every bit the header and word wrap. After building the binary stream in accord with the earlier sections, the resulting Find and Replace values are as follows:

Detect what:
0002000070170000dc0500000300640000000500008008000080000000002a0001000000900144420100065461686f6d6108003c003c0054006500780074003e003e0000000000

Supervene upon with:
0002000050320000dc0500000300640000000500008000528800000000003a00010000009001a0860100065461686f6d6108003c003c0054006500780074003e003e0000000000

One time y'all accept formatted your notation header and text containers, y'all tin begin modifying the text as yous wish.

After a scrap of formatting such as adjustment the lefts, reducing the heights of the Header with the lesser select handle and reducing the vertical spacing between the two annotations we get this:

You tin can paste documentation from another source without affecting the word wrap, colour or whatever of the other features that were only changed.

While this may seem a bit boring, once you are comfortable with working in the XML, you lot tin can create several Header and <<Text>> annotations in your package control flows, data flows, event handlers and containers, open the package XML documents, then execute the Find and Supervene upon on all open documents.

If your development team uses SSIS templates or specific design patterns, you can add these basic annotations for developers to apply when they open the templates for editing. These template SSIS packages can be saved to the directory

C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\ProjectItems\DataTransformationProject\DataTransformationItems\

Or if yous're working on a 64 flake machine they can be saved to the directory

C:\Programme Files(x86)\Microsoft Visual Studio nine.0\Common7\IDE\PrivateAssemblies\ProjectItems\DataTransformationProject\DataTransformationItems\

When you open a new SSIS package for editing these template packages volition show upwards in the listing of templates.

Warning Label

The warning characterization volition demonstrate the use of background colors, auto grow also as centering of text. In improver, nosotros'll add a tooltip to our characterization.

Allow's offset start by adding two annotations, the first containing the text Alarm and the 2d the initial text or alert every bit shown below.

We will not change the font typeface, size or color in the binary stream but rather utilize the Font dialog box after the background color and centering have been set up. For this demonstration nosotros'll use standard red and yellowish colors to keep the editing simple and edit the binary stream directly.

Going to the XML it should be easy to detect the binary stream that nosotros will be editing. First of all there are only four in our packet, and these two new annotations will have the default Container segment that we've identified before as seen below.

In accord with the before section on Groundwork Color, we observe the 37th - 44th $.25 in the binary stream as shown below

Using ff0000 for the color blood-red and changing the last pair, 80 to 00, nosotros get the following modification to the binary stream

Now we'll go on and enable the word wrapping as nosotros did before too as heart justify our text as described earlier in this article. This is done by altering the three hexadecimal digits shown below

The new value is 11a which volition turn on heart justification as well as plough off transparency equally described earlier as follows

Equally I said before, these changes will have to be made to the 2nd notation in our warning label too as this set of changes made twice because the control flow has two sets of annotation binary streams for each annotation. And then, now that nosotros have on binary stream edited to the point we desire to edit information technology, we'll take those changes and copy them to the other three spots that demand to be change using the Find and Supersede. So we'll highlight the modified Container segment of our edited binary stream and copy it equally shown below:

Next, highlight the Container segment in the binary stream below as that will be modified, then select the Observe and Supercede from the Edit bill of fare.

Click the Supplant All and there should be 3 replacements. Once you lot take made the replacements, click on the packet Designer to view the changes that were fabricated. They should await every bit follows:

Adjacent, using the Font dialog box nosotros'll brand updates to the typeface, size and color of the warning title and text. Right click each of the warning annotations and make the following Font settings for the Warning Label and warning text, respectively:

Afterwards adjustment the left side of the two annotations, shortening the label superlative, adding the warning text and removing the vertical space between them, y'all'll get the following warning box:

When adding text to the label you'll discover how y'all take to keep adjusting the tiptop. Now we'll enable the automobile tiptop by changing the 011a to 011e for the iv entries that define our two warning labels.

In addition, let'southward add a tool tip.

The final issue that we see when we switch dorsum to the designer:


Y'all can add a Company Copyright annotation and disable selectability and editing every bit described before besides equally any number of other features or combinations thereof.

Summary

Agreement the construction and capabilities of Annotations can become a long way whether your providing minor configurations to existing packages or templates or your generating your SSIS bundle annotations from an application. When used with their total capabilities, annotations can provide a professional look to your work making your most complex packages easy to empathize every bit well as maintain.

While some of these adjustments may seem a little irksome, saving them in your team's template drove tin can go a long way in speeding up your package documentation process.

How To Change A Text Color In Data Flow Ssis,

Source: https://www.sqlservercentral.com/articles/hidden-ssis-features-word-wrapping-your-annotations-and-more

Posted by: bustillosclaill1953.blogspot.com

0 Response to "How To Change A Text Color In Data Flow Ssis"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel