SSIS


Over here, Oren posted a list of 15 issues with SSIS. Some are founded, most are not. Read on for more:

(more…)

Please see the following post by Bob Bojanic on the SSIS development team: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1855810&SiteID=1

It seems that a change to the CLR has caused binary incompatibilities between assemblies and the VB runtime.

To ensure you are not affected, be sure that you have SQL Server Service Pack 2 (SP2) installed.

A fellow MVP, Jeff Johnson, has been having some issues (Access is Denied) with respect to connecting to a remote SSIS service. Books Online does not, apparently contain complete information. (Reference: http://msdn2.microsoft.com/en-us/library/aa337083.aspx)

Bottom line, a few steps should be added to that document to ensure your users can connect. (The root problem is the need to keep the user out of the server’s local administrator group.)

Instead of documenting them here, I’ll just point you to the thread that contains the complete picture. http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=701950&SiteID=1

In summary:

  • Note: These steps are performed on the remote server that you cannot connect to
  • Edit Launch Permissions to include the Distributed COM (DCOM) user group
  • Be sure to customize “Access permissions” to include the Distributed COM (DCOM) user group
  • Make sure all remote access boxes are checed appropriately
  • Add the user account/group to the DCOM user group
  • You may need to restart the SSIS Service after making these changes — in fact, I recommend it.

Last night a user posted to the SSIS Forum a situation where he needed to be able to dynamically substring one field based on the substring rules contained in a table. So I put together a package that does just this. Before we go there though, I just want to mention that there are many ways, progmatically of course, to tackle this problem. The example below strictly follows my interpretations of Bill’s challenge. There is a better way by using the split() function, but never-the-less here’s the example using substring().

(more…)

Just a quick tutorial on using a script component as a source… Follow the link for screenshots.

(more…)

After responding to a few posts over on the SSIS forum today, I thought I’d post a few helpful tidbits.

  • If you are going to use expressions in a variable (PLEASE DO! They can be quite helpful.) and are assigning the result of the expression to a string data type, you will have to ensure that the output of the string expression can be cast to unicode (DT_WSTR in SSIS talk). Casting the output of an expression to DT_STR will result in an error. Why when they are both strings? The underlying data type of “string” inside SSIS is part of the .net framework where a string is defined as “A sealed class type representing Unicode character strings.” Official documentation here.
  • Many data types can be implicty cast to string, so in some cases you don’t have to explicitly cast to string.
  • Various date formats can be achieved in SSIS a few ways. One of the most simple is to use the CONVERT() function in Transact-SQL. A format of 101 will return a date in the form of mm/dd/yyyy. 112 will return YYYYMMDD. Very handy indeed. The other way is to use expressions inside SSIS. For this you can use variable expressions (if you need to store it) or you can use derived columns (if you need to use it inside the data flow). Script tasks/components surely can do this as well, but that’s not out of the box functionality. An expression of “YEAR(getdate()) ” will return an integer in the form of YYYY. If you want to build your own YYYYMMDD format, either by using getdate() or by converting a date value inside the flow, you can use this expression: “(DT_WSTR,4)YEAR(GETDATE()) + RIGHT(”00″ + (DT_WSTR,2)MONTH(getdate()),2) + RIGHT(”00″ + (DT_WSTR,2)DAY(getdate()),2)”
  • If you edit DtsDebugHost.exe.config, prepare to run into weird problems.
  • When using the /SET option to dtexec.exe to set the value of a variable (say MyVariable = 10), use the following format (note, variable names are CaSE SenSITiVE): \Package.Variables[User::MyVariable].Properties[Value];10
  • When selecting @@IDENTITY from SQL Server, the return type is numeric, not an integer. This is important because the temptation is to just select @@IDENTITY and store it in an SSIS Int data type. It doesn’t work that way, so cast it to INT first, in the query: select cast(@@IDENTITY as int) as ‘Ident’

Over on the forums today a user, Pra Rav, has asked how do we work with mainframe zoned decimals. I have the answer, at least on how *I* deal with them. Take it or leave it as there may be other ways to do this, but it works slick enough for me to blog about it and to share it with Pra. Read on….

(more…)

It is one of the more common questions over on the SSIS Forums. How can I check if a record exists and if so, how can I check (quickly) if it has changed. Jamie Thomson has a blog post that outlines this, and I’ve made it a sticky post on the forums. However, if you need to check many, if not all of the columns in a table for changes, Jamie’s blogged method might be a bit laborious. This is where the Konesan’s Checksum transformation comes in. Read on…

(more…)

Jamie Thomson and I briefly discussed an issue I was having today with respect to marking sources as sorted (IsSorted=True) and then to later have the IsSorted property changed back to “False” as a result of a derived column transformation. Read on for more…

(more…)

A fellow user on the SSIS forums has posted his code to FTP from within a script task. I just want to increase visibility to this as the stock FTP Task is somewhat limited.

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1258083&SiteID=1

« Previous PageNext Page »