J'ai une source de base de données PostgreSQL héritée (ODBC) que j'essaie de migrer vers un nouveau schéma SQL Server à l'aide de SSIS. Je reçois un avertissement disant:
La méthode d'extraction «ligne par ligne» est appliquée car la table a des colonnes LOB. Le contenu de la colonne est LOB
Le fait est qu'aucune des colonnes n'a vraiment besoin d'être des LOB. Il y en a quelques-uns qui sont des types TEXT, mais qui pourraient facilement s'intégrer dans un varchar (max). Encore plus étrange, cependant, la plupart sont déjà des varchars, mais il semble que tout ce qui se trouve sur varchar (128) soit traité comme s'il s'agissait d'un LOB (à l'avance, le type de données est DT_NTEXT).
J'ai essayé de faire une commande SQL manuelle où j'ai explicitement casté chaque type de chaîne en un varchar d'une longueur appropriée dans l'instruction select, et ils sont toujours définis comme DT_NTEXT dans la source ODBC.
Je ne suis pas DBA, il est donc tout à fait possible que je fasse quelque chose de vraiment stupide. Je voudrais juste savoir la meilleure façon de garantir que les types se terminent en varchars afin que je puisse récupérer par lots. Des idées?
Au cas où cela importerait, j'utilise SSIS-BI 2014 dans Visual Studio 2013.
varchar(max)
comme un raccourci pour dire que les données de la colonne peuvent tenir dans la taille maximale de varchar, qui est d'environ 4000, pour les besoins de SSIS, je pense. Je ne lance rien en fait varchar(max)
; cependant, j'ai jeté quelques colonnes varchar(4000)
, juste pour être sûr.