SSIS genera una cadena Unicode como código de caracteres Shift-JIS en un archivo de texto
Patrones que dan lugar a errores
Supongamos que una columna de tipo nvarchar en una tabla de SQL Server tiene una cadena que no se puede usar en Shift-JIS. Por cierto, si pones estos caracteres en la columna varchar, hay caracteres que no se pueden usar, como la columna "ColumnShiftJis" a la derecha. Reemplázalo.
En SSIS, el flujo está configurado para leer datos de la tabla anterior como se muestra en la figura y enviarlos a un archivo de texto.
Suponga que desea generarlo como un archivo CSV. Dado que Shift-JIS se usa a menudo en archivos CSV, establezca la codificación de caracteres del archivo de texto en Shift-JIS.
Si se ejecuta con esta configuración, se producirá un error en el momento de la salida.
Aparece un mensaje de error similar al siguiente:
El archivo de salida también se interrumpirá a mitad de camino cuando se produjo el error.
Si intenta generar resultados tal como están, será un error, así que intente incorporar "conversión de datos" en el medio.
Convierta el tipo de datos de "DT_WSTR" a "DT_STR" y conviértalo en un formulario que se pueda enviar a Shift-JIS.
Sin embargo, si también ejecuta esto, obtendrá un error. Esto se debe a que SSIS falla estrictamente el procesamiento implícito que hace que falten datos. Si desea que SSIS realice el procesamiento de texto destipado, deberá especificar explícitamente la sustitución de caracteres para todos los caracteres.
Soluciones provisionales
Hay una manera de cambiar el tipo de texto usando SQL al leer desde una tabla en una base de datos. Si es SQL, es el motor de SQL Server el que lo ejecuta, no SSIS, por lo que puede ejecutarse sin errores. Por cierto, todos los caracteres que no se pueden usar en Shift-JIS son "?" Convertido a: Esta es una especificación del lado de SQL Server. Incluso si no es SSIS, el resultado es similar para todos los sistemas que usan SQL Server.
Abra ADO NET Translator y cambie el modo de acceso a datos a SQL Command. Ahora que puede escribir SQL, escriba una instrucción Select para recuperar datos de la base de datos. El texto que contiene caracteres que no se pueden usar en Shift-JIS se convierte a la fuerza a varchar mediante cast.
Dado que los caracteres que no se pueden usar en Shift-JIS ya se han eliminado en el momento en que los datos fluyen a SSIS, el procesamiento se puede pasar tal cual.
Puede ver que el texto se ha escrito correctamente en el CSV. Además, todos los caracteres que no se pueden usar en Shift-JIS son "?" Puede ver que se ha convertido en: