[Jamie Thomson] La limite des 4000 caractères en SSIS dans les DT_WSTR

Jamie Thomson apporte une précision importante sur la fameuse « limite des variables à 4000 caractères » dans SSIS.

Soyons clair: une variable de type string en SSIS est comme une string .Net: vous pouvez mettre – quasiment – tout le texte que vous voulez dedans. La où cela change c’est lorsque vous utilisez une expression (EvaluateAsExpression à True): dans ce cas l’expression se retrouve limitée pour une raison incompréhensible à 4000 caractères.

A son post, je souhaite cependant apporter une solution à une problématique induite par cette limitation.

Et si vous souhaitez stocker une requête SQL paramétrée via une expression et que celle ci a la malencontreuse idée de dépasser cette limite? Plusieurs solutions sont possibles: comme par exemple la stocker dans une variable à modifier par scripting: cette variable restera non limitée vu qu’elle n’est pas évaluée comme expression.

string query = Dts.Variables[« Requete« ].Value;
query = query.Replace(« @START« ,(string)Dts.Variables[« Debut« ].Value);
query = query.Replace(« @END« ,(string)Dts.Variables[« Fin« ].Value);
Dts.Variables[« Requete« ].Value = query;

Voire même si vous voulez éditer cette grosse requête plus facilement, la stocker dans un fichier, et la charger à l’aide d’un FileStream dans une variable – donc de type string – à l’aide d’un composant Script.

TextReader tr = new StreamReader((string) Dts.Variables[« FichierRequete« ].Value, System.Text.Encoding.Default);
string query = tr.ReadToEnd();
query = query.Replace(« @START« ,string)Dts.Variables[« Debut« ].Value);
query = query.Replace(« @END« ,(string)Dts.Variables[« Fin« ].Value);
Dts.Variables[« Requete« ].Value = query;

Une fois ceci fait, la requête est utilisable dans une OLE DB Source en mode QueryFromVariable.
Merci encore à Jamie pour ce rappel, vous pouvez consulter son post original à l’adresse ci-dessous.

http://blogs.conchango.com/jamiethomson/archive/2009/05/27/4000-character-limit-in-ssis.aspx

A bientôt!

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s