SSIS matar ut en Unicode-sträng som en Shift-JIS-teckenkod till en textfil
Mönster som resulterar i fel
Anta att en kolumn av typen nvarchar i en tabell på SQL Server har en sträng som inte kan användas i Skift-JIS. Förresten, om du lägger dessa tecken i varchar-kolumnen finns det tecken som inte kan användas, till exempel kolumnen "ColumnShiftJis" till höger. Byt ut det.
På SSIS ställs flödet in för att läsa data från föregående tabell som visas i figuren och mata ut dem till en textfil.
Anta att du vill mata ut den som en CSV-fil. Eftersom Shift-JIS ofta används i CSV-filer anger du teckenkodningen för textfilen till Shift-JIS.
Om du kör med den här inställningen uppstår ett fel vid tidpunkten för utdata.
Ett felmeddelande som liknar följande visas:
Utdatafilen kommer också att avbrytas halvvägs när felet inträffade.
Om du försöker mata ut som det är kommer det att bli ett fel, så försök att införliva "datakonvertering" i mitten.
Konvertera datatypen från "DT_WSTR" till "DT_STR" och gör den till ett formulär som kan matas ut till Shift-JIS.
Men om du också kör detta får du ett fel. Detta beror på att SSIS strikt misslyckas med implicit bearbetning som gör att data saknas. Om du vill att SSIS ska utföra textdetypad bearbetning måste du uttryckligen ange teckenersättning för alla tecken.
Lösningar
Det finns ett sätt att ändra typen av text med SQL när du läser från en tabell i en databas. Om det är SQL är det SQL Server-motorn som kör den, inte SSIS, så den kan köras utan fel. Förresten, alla tecken som inte kan användas i Shift-JIS är "?" Konverterad till: Detta är en SQL Server sidospecifikation. Även om det inte är SSIS är resultatet liknande för alla system som använder SQL Server.
Öppna ADO NET Translator och ändra dataåtkomstläget till SQL Command. Nu när du kan ange SQL skriver du en Select-instruktion för att hämta data från databasen. Text som innehåller tecken som inte kan användas i Shift-JIS tvångskonverteras till varchar med cast.
Eftersom tecken som inte kan användas i Shift-JIS redan har tagits bort vid tidpunkten för data som flödar till SSIS kan bearbetningen skickas som den är.
Du kan se att texten har skrivits till CSV-filen. Dessutom är alla tecken som inte kan användas i Shift-JIS "?" Du kan se att den har konverterats till: