SSIS emet una cadena Unicode com a codi de caràcter Shift-JIS a un fitxer de text
Patrons que provoquen errors
Suposem que una columna del tipus nvarchar en una taula de l'SQL Server té una cadena que no es pot utilitzar a Shift-JIS. Per cert, si poseu aquests caràcters a la columna varchar, hi ha caràcters que no es poden utilitzar, com ara la columna "ColumnShiftJis" a la dreta. Substituïu-lo.
Al SSIS, el flux està configurat per llegir les dades de la taula anterior com es mostra a la figura i emetre-les a un fitxer de text.
Suposem que voleu emetre'l com a fitxer CSV. Com que Shift-JIS s'utilitza sovint en fitxers CSV, establiu la codificació de caràcters del fitxer de text a Maj-JIS.
Si executeu amb aquesta configuració, es produirà un error en el moment de la sortida.
Apareix un missatge d'error similar al següent:
El fitxer de sortida també s'interromprà a la meitat del moment en què s'hagi produït l'error.
Si intenteu sortir tal com és, serà un error, així que proveu d'incorporar "conversió de dades" al mig.
Convertiu el tipus de dades de "DT_WSTR" a "DT_STR" i convertiu-lo en un formulari que es pot sortir a Maj-JIS.
Tanmateix, si també executeu això, obtindreu un error. Això es deu al fet que el SSIS falla estrictament el processament implícit que fa que faltin dades. Si voleu que SSIS realitzi un processament destipat de text, haureu d'especificar explícitament la substitució de caràcters per a tots els caràcters.
Solucions
Hi ha una manera de canviar el tipus de text que utilitza SQL quan es llegeix des d'una taula d'una base de dades. Si és SQL, és el motor SQL Server qui l'executa, no SSIS, de manera que es pot executar sense errors. Per cert, tots els caràcters que no es poden utilitzar a Shift-JIS són "?" S'ha convertit a: Aquesta és una especificació lateral de l'SQL Server. Fins i tot si no és SSIS, el resultat és similar per a tots els sistemes que utilitzen SQL Server.
Obriu ADO NET Translator i canvieu el mode d'accés a les dades a l'ordre SQL. Ara que podeu introduir sQL, escriviu una sentència Selecciona per recuperar dades de la base de dades. El text que conté caràcters que no es poden utilitzar a Maj-JIS es converteix per la la seva manera a varchar utilitzant el repartiment.
Com que els caràcters que no es poden utilitzar a Maj-JIS ja s'han suprimit en el moment en què les dades flueixen al SSIS, el processament es pot passar tal com és.
Podeu veure que el text s'ha escrit correctament al CSV. A més, tots els caràcters que no es poden utilitzar a Shift-JIS són "?" Podeu veure que s'ha convertit en: